Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


hantering av stränglängd?!

Postades av 2003-09-19 09:28:58 - Max Edlund, i forum asp - allmänt, Tråden har 14 Kommentarer och lästs av 549 personer

Hej!

Jag har ett storleksbegränsat område som ska fyllas med text från en databas. Vill inte använda mig av scroll-lister (annars är <code>style="overflow: auto;"</code> ett smidigt sätt), så jag kör följande knep:

<code>
If Len(text) > 850 Then
text = Left(text, 850) & ... Läs mer
End If
</code>

Allt skulle vart frid och fröjd om inte texten innehöll breaktaggar. Nu gör den det och räknaren ser breaktaggar som fyra tecken medans den i själva verket tar upp en hel rad.
Detta gör att texten blir alldeles för stor vid visning, och hela sidan blir förstörd. :)

Har försökt räkna antalet breaktaggar i texten och gångrat varje med 50 för att få ett ungefärligt värde:

<code>
text = Left(text, 850-(antal breaktaggar))
</code>

Men detta fungerar inte pga att alla breaktaggar i texten räknas, inte bara de som skrivs ut. Så är det en lång text med många breaktaggar så skrivs det knappt ut någon text alls.

Kan någon hjälpa mig? Jag är säkert inne på helt fel spår...

mvh Max




Svara

Sv: hantering av stränglängd?!

Postades av 2003-09-19 10:03:16 - Pelle Johansson

När du skriver ner det till databasen via din sqlsträng så säger du att det skall vara x tecken, då kan det i alla fall aldrig bli overflow.


Svara

Sv: hantering av stränglängd?!

Postades av 2003-09-19 10:19:08 - Max Edlund

Jag förstår inte. Menar du att begränsa antal tecken vid skrivning av text? Tanken är att den del av texten (nyhet) som får plats ska visas på förstasidan och vara en länk till hela texten (som ska kunna vara hur lång som helst).




Svara

Sv: hantering av stränglängd?!

Postades av 2003-09-19 10:20:22 - Per Persson

> Allt skulle vart frid och fröjd om inte enterslagen vid uppladdnig av texten bytts ut
> mot breaktaggar (för att användaren ska kunna stycke-indela).

Byt inte ut radbrytningarna vid uppladdning utan vid utskrift.


Svara

Sv: hantering av stränglängd?!

Postades av 2003-09-19 10:49:10 - Max Edlund

Det har ingen betydelse (för det här problemet).

Denna funktion:
<code>text = Left(text, 850)</code>
räknar <code><br></code>som fyra tecken oavsett om det byts ut vid utskrift.

mvh Max


Svara

Sv: hantering av stränglängd?!

Postades av 2003-09-19 10:56:04 - Andreas Hillqvist

Varför inte bar ta bort?
<code>
text = Replace(text, "<br>", "")
If Len(text) > 850 Then
text = Left(text, 850) & ... Läs mer
End If
</code>


Svara

Sv: hantering av stränglängd?!

Postades av 2003-09-19 11:02:25 - Max Edlund

För att den som skriver nyheten ska ha möjlighet att kunna stycke-indela sin text.

Ursäkta om jag uttrycker mig oklart, har läst igenom mitt inlägg och det är nog svårt att förstå hur jag menar... :)

mvh Max


Svara

Sv: hantering av stränglängd?!

Postades av 2003-09-19 11:30:04 - Tommy Söderkvist

Jo, men det är bara i beräkningen av stränglängden som Replace-funktionen skall användas.


Svara

Sv: hantering av stränglängd?!

Postades av 2003-09-19 13:45:06 - Max Edlund

Okej, ska försöka förklara bättre.

Sidan består av en huvudframe som inte är scrollbar. Här finns flera nyheter som hämtas från databaser. Om en nyhet är för lång pressas resten ner utom synhåll. Därför har jag försökt begränsa längden av visning till att få plats inom angiven td, för att sedan länka vidare till fulllängd.
<code>
<td width=90 height=200>
<%=text%>
bla bla blabla <br>(räknas som 4 när den egentligen tar upp ca 70 teckens utrymme)
blabla bla bla bla <br>
<br>
<br>
<br>
bla blabla
mer text som nu inte innehåller 850 tecken, MEN tar upp 850 teckens plats...
</code>

resultat: Td:n blir alldeles för hög

Blev det bara rörigare nu? :D

mvh Max


Svara

Sv: hantering av stränglängd?!

Postades av 2003-09-19 14:39:09 - Gustav Larson

använd regexp och räkna hur många gånger det står <br>. sedan tar du left(str,850 - (70 * antal <br>))


Svara

Sv: hantering av stränglängd?!

Postades av 2003-09-19 14:41:08 - Andreas Hillqvist

ÄR inte riktigt som du tänkt dig. Men ska jobba på den när jag kommer hem.
<code>
Private Function LimitText(Value, MaxColumns, MaxRows, Append)
Dim Row
Dim Rows
Rows = Split(Value, "<BR>")
For Row = 0 To UBound(Rows)
If Len(Rows(Row)) > MaxColumns Then
Rows(Row) = Left(Rows(Row), MaxColumns) & Append
ReDim Preserve Rows(Row)
Exit For
ElseIf Row >= MaxRows Then
Rows(Row) = Rows(Row) & Append
ReDim Preserve Rows(Row)
Exit For
End If
Next
LimitText = Join(Rows, "<BR>")
End Function

Response.Write LimitText(text, 85, 3,"... Läs mer")
</code>

Allt skulle vart frid och fröjd om inte texten innehöll breaktaggar. Nu gör den det och räknaren ser breaktaggar som fyra tecken medans den i själva verket tar upp en hel rad.
Detta gör att texten blir alldeles för stor vid visning, och hela sidan blir förstörd. :)

Har försökt räkna antalet breaktaggar i texten och gångrat varje med 50 för att få ett ungefärligt värde:

<code>
text = text, 250, -(antal breaktaggar))
</code>

Men detta fungerar inte pga att alla breaktaggar i texten räknas, inte bara de som skrivs ut. Så är det en lång text med många breaktaggar så skrivs det knappt ut någon text alls.

Kan någon hjälpa mig? Jag är säkert inne på helt fel spår...

mvh Max




</code>


Svara

Sv: hantering av stränglängd?!

Postades av 2003-09-19 14:46:03 - Max Edlund

Gurra:

Problemet med det är att HELA textens br räknas, inte den del som visas. Är texten då lång och innehåller många br, blir det inte rätt iallafall.

Är detta problem olösligt? Det har jag svårt att tro...

tack för engagemang

mvh Max


Svara

Sv: hantering av stränglängd?!

Postades av 2003-09-19 14:51:43 - Gustav Larson

men om man först kör left(str,850) och sedan regexp...


Svara

Sv: hantering av stränglängd?!

Postades av 2003-09-19 17:50:17 - Niklas Jansson

En metod (som är löjligt långsam) är att du går igenom hela strängen, och räknar antalet tecken.
typ

for i=1 to len(str)
if mid$(str, i, 4)="<br>" then
i=i+3
antaltecken=antaltecken+50
else
antaltecken=antaltecken+1
end if
next

En annan metod är att du gör en funktion "AntalTecken(str)", och sen gör en iterativ undersökning. typ:

function AntalTecken(str)
nystr=replace(str, "<br>", "")
antal_br=(str-nystr)/4
AntalTecken=antal_br*50+len(nystr)
end function

och sen kollar du med nånting i stil med

Max=850
antal=max
antalt=Antaltecken(left(str))
do while antalt=>max
antal=antal-50
antalt=Antaltecken(left(str))
loop

Och det går att optimera mycket hårdare.


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 792
27 960
271 761
2 369
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies