[ASP] test char op vbNewLine...

Pagina: 1
Acties:

  • licensed
  • Registratie: Augustus 2002
  • Laatst online: 24-01 20:57
Dag allemaal,

Ik vraag me af hoe je kunt testen of een bepaalt karakter een vbNewLine of vbCrLf is.

Ik heb het volgende stukje code geschreven:

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
maxLength = 20
str = "rewrwer sdfsdfs sdf" & vbNewLine &_
"sdf sdf dsf ewqe qwe gd g fdhgf" & vbCrLf &_ 
"hgrrrrrrrrrhgfhjj seewarwe"
strLength = Len(str)
strTemp = str
opmerking = ""
x = 1
y = 1
  Do While Not x = strLength
    ch = Mid(str, x,1)
    If ch = vbCrLf Then  ' dit werkt blijkbaar niet zo...
      opmerking = opmerking & Left(strTemp, y) & "<BR>"
      strTemp = Right(strTemp, y)
      x = strLength - Len(strTemp)
      y = 0
    ElseIf y = maxLength Then
      strLine = returnLine(strTemp, y)
      opmerking = opmerking & strLine & "<BR>"
      strTemp = Right(strTemp, (Len(strTemp) - Len(strLine)))
      x = strLength - Len(strTemp)
      y = 0
    Else
      y = y + 1
    End If
    x = x + 1
  Loop
  opmerking = opmerking & strTemp


De bedoeling van dit stukje code is het netjes afbreken van een zin.

If ch = vbCrLf Then

Blijkt echter niet te werken.
Weet iemand hoe ik deze test dan moet uitvoeren?

[ Voor 7% gewijzigd door licensed op 12-03-2003 15:55 ]


  • Xion
  • Registratie: November 2000
  • Laatst online: 20:37
Is het niet mogelijk om de ASCII waardes te vergelijken?

Ik kan nu geen ASP testen, omdat ik op school zit. Onder VB zou het ongeveer zo gaan:
code:
1
If Asc(Teken) = Asc(VBNewLine) Then ...


succes :)

edit: Asc kan ook Acii zijn, zie MSDN ;)

[ Voor 10% gewijzigd door Xion op 12-03-2003 16:01 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23-08 10:39

Janoz

Moderator Devschuur®

!litemod

Volgens mij bestaat de newline in windows uit 2 characters (de \r en de \n). Het lijkt me dus een beetje onlogisch om een teken te vergelijken met een tekenreeks.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • DukeMan
  • Registratie: Mei 2000
  • Niet online
Is het sowieso niet makkelijker eerst het volgende te doen:?

Visual Basic:
1
2
opmerking = replace(opmerking, vbCrLf, "<BR>")
opmerking = replace(opmerking, vbNewLine, "<BR>")


Dan worden in ieder geval alle vbCrLf's en vbNewLine's om gezet in een nieuwe HTML regel.

  • licensed
  • Registratie: Augustus 2002
  • Laatst online: 24-01 20:57
Een vbNewline is: Chr(13) & Chr(10) or Chr(10)
Een vbCrLf is: Chr(13) & Chr(10)

Is een vbNewLine / vbCrLf nou 1 karakter of een reeks van karakters? En hoe test ik of ze voorkomen in een string?
Heeft hier dan echt niemand ervaring mee / een antwoord op??

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22:55

TeeDee

CQB 241

Hoe wil je dit gebruiken? Met data wat uit een form komt oid?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • licensed
  • Registratie: Augustus 2002
  • Laatst online: 24-01 20:57
Het scriptje wordt gebruikt in een stuk code dat PDF'jes genereerd met o.a. tekst uit een database. (Hiervoor gebruik ik aspEasyPDF van MITData). Het probleem van aspEasyPDF is dat je geen tekstvak kunt maken waar de tekst binnen blijft. Ik moet er dus zelf voor zorgen dat de tekst netjes afgebroken wordt.

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22:55

TeeDee

CQB 241

dus:
je krijgt je tekststring uit de db. Daar zitten vbNewLines e.d. in?
uit een app van mij (dit komt uit iets wat op een form input is gebaseerd!):
ASP:
1
2
3
bericht = Replace(bericht, vbcrlf, "<br>")
bericht = Replace(bericht, CHR(10), "<br>")
bericht = Replace(bericht, CHR(13), "<br>")

Of denk ik nu te simpel?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • iENO
  • Registratie: November 2001
  • Niet online

iENO

pep

Topic even vluchtig doorgelezen, maar kun je het ook niet gewoon met Split(bericht, vbCrLf) doen?

Split(bericht, vbCrLf)(0) = de eerste regel, (1) de tweede enz enz.

  • licensed
  • Registratie: Augustus 2002
  • Laatst online: 24-01 20:57
Er komt inderdaad tekst met newlines uit de DB. Zoals je misschien in m'n stukje code kunt zien doorloop ik die tekst op zoek naar newlines en het x_ste teken...
Als ik een newline tegenkom moet er een <BR> in de output (dit is ook in aspEasyPDF een nieuwe regel) komen en wordt de teller die bijhoudt hoeveel tekens er op de huidige regel staan op 0 gezet (dit moet gebeuren, anders gaat 't niet goed)...

Het werkt op zich heel mooi, maar het testen op de newline lukt niet :S
Ik zou natuurlijk eerst replace(str, vbNewLine, "een of ander niet veel voorkomend tekentje") kunnen doen en vervolgens kunnen testen op dat niet veel voorkomende tekentje, maar dat is natuurlijk niet echt de beste oplossing..

  • licensed
  • Registratie: Augustus 2002
  • Laatst online: 24-01 20:57
iENO schreef op 14 March 2003 @ 16:41:
Topic even vluchtig doorgelezen, maar kun je het ook niet gewoon met Split(bericht, vbCrLf) doen?

Split(bericht, vbCrLf)(0) = de eerste regel, (1) de tweede enz enz.
Misschien is het op deze manier op te lossen... Dan zou je op ieder element uit de array nog moeten checken op het aantal tekens..
Ik ga het proberen.

  • licensed
  • Registratie: Augustus 2002
  • Laatst online: 24-01 20:57
Heel erg bedankt! _/-\o_

Dit:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
maxLength = 20
str = "rewrwer sdfsdfs sdf" & vbNewLine &_
"sdf sdf dsf ewqe qwe gd g fdhgf" & vbCrLf &_
"hgrrrrrrrrrhgfhjj seewarwe"
opmerking = ""

blocks = Split(str, vbNewLine)
For Each block In blocks
  words = Split(block, " ")
  line = ""
  lineLength = 0
  wordLength = 0
  numWord = 1
  numOfWords = UBound(words)+1
  Do While numWord <= numOfWords
    wordLength = Len(words(numWord-1))
    If lineLength + wordLength <= maxLength Then
      line = line & words(numWord-1) & " "
      lineLength = lineLength + wordLength + 1
    Else
      line = line & "<BR>" & words(numWord-1) & " "
      lineLength = wordLength + 1
    End If
    numWord = numWord + 1
  Loop
  opmerking = opmerking & line & "<BR>"
Next


werkt!

[ Voor 13% gewijzigd door licensed op 17-03-2003 17:17 ]

Pagina: 1