Nej jag visste inte hur jag skulle formulera rubriken :p
Till min fråga:
Hur ska jag göra för att gå igenom en sträng (från en textarea) för att leta efter vbCrlf?
Jag vill att för varje gång den hittar ett vbCrlf så ska den göra något som kommer att ta några rader, och dessutom vill jag att den då ska lägga till 1 på ett tal. Detta går ju knappast att lösa med Replace ... eller RegExp...
Ex:
Om den hittar en vbCrlf ska den göra detta:
x = x + 1
' plus en massa andra koder
Sub FindVbCrLf(strSource)
Set objRX = New RegExp
objRX.Global = True
objRX.Pattern = "\n"
Set objMatches = objRX.Matches(strSource)
For Each Match In objMatches
[blue]'Do stuff... exempelvis x = x + 1[/blue]
Next
End Sub
Microsoft VBScript runtime error '800a01b6'
Object doesn't support this property or method: 'Matches'
/test.asp, line 19
Set objMatches = objRX.Matches(strSource)
Tydligen är det felstavat eller något, men jag kan itne komma på vad som är felstavat :p
En annan fråga:
Jag vill att den ska skriva ut värdet.. men när den stöter på vbCrlf ska den stanna och köra lite koder, sedan vill jag att den ska fortsätta så... Hur gör jag då?
Jag kan formulera om min andra fråga... Jag håller på med ett sagoscript och jag vill att för varje radbrytning ska den lägga till en del TD- och TR-taggar... Jag vill alltså ha sagan fint uppdelad. Dessutom vill jag skriva in radnummret också... Förstår ni vad jag menar?
Det torde inte vara något problem. Varje match-objekt innehåller attributet firstindex som anger var vbcrlf hittades.
Sub FindVbCrLf(strSource)
dim p
Set objRX = New RegExp
objRX.Global = True
objRX.Pattern = "\n"
Set objMatches = objRX.Matches(strSource)
p = 0
x = 0
For Each Match In objMatches
'Do stuff... exempelvis x = x + 1
x = x + 1
response.write x 'radnummer och andra formatteringar
'skriv text utan vbcrlf
response.write substring(strSource,p+1,match.firstindex-p)
p = p + match.firstindex + match.length
response.write "" 'övriga formatteringar
Next
End Sub
Lägg till lite testutskrifter så du ser vilka värden som variablerna får efterhand
Sub FindVbCrLf(strSource)
dim p
Set objRX = New RegExp
objRX.Global = True
objRX.Pattern = "\n"
Set objMatches = objRX.execute(strSource)
p = 0
x = 0
For Each Match In objMatches
'Do stuff... exempelvis x = x + 1
x = x + 1
response.write x 'radnummer och andra formatteringar
'skriv text utan vbcrlf
response.write "Debug p:" & p
response.write "Debug firstindex:" & match.firstindex
response.write "Debug length:" & match.length
response.write substring(strSource,p+1,match.firstindex-p)
p = p + match.firstindex + match.length
response.write "" 'övriga formatteringar
Next
End Sub
Tänkte väl det.. har för mig att substr finns i Jscript.. eller nåt :p
Men det är nog något fel med talen för jag får detta felmeddelande:
Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument: 'Mid'
/tjanster/radgenerator.asp, line 26
Jag menar här:
p = p + match.firstindex + match.length
Behöverman verkligen p +? Jag menar... Det blir ju ett ganska stort tal om man bara adderar och adderar och till slut så blir ju p större än antalet tecken i strSource...
r\ Har testat med att ta bort "p + "... Nu funkar det perfekt! ;)
268 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e