<%
Function FormatList(strText)
strText = strText & vbCRLF
Dim re
Set re = New RegExp
re.IgnoreCase = True
re.MultiLine = True
re.Global = True
re.Pattern = "(\d+ - )([^\n]+)\n" ' La dit \d+ för talen i början av strängen
dim myMatches
Set myMatches = re.Execute(strText)
For Each myMatch In myMatches
FormatList = FormatList & checkThisWord(myMatch.SubMatches(1))
Next
End Function
Function checkThisWord(word)
If Right(word,3) = ".se" Then word = Replace(word, ".se", "")
word = replace(word, " ", "")
word = replace(word, ".", "")
checkThisWord = "<b>" & word & " LEN: " & Len(word) - 1 & "</b><br>"
End Function
dim str
str = "3 - ukrainas natur" & vbCrLf & "1 - ukrainas ambassad" & vbCrLf & "1 - ukraina visa" & vbCrLf & "1 - ukraina turism" & vbCrLf & "1 - sveriges ambassad i ukraina" & vbCrLf & "1 - fakta om kiev" & vbCrLf & "1 - fakta kiev" & vbCrLf & "1 - allakiev" & vbCrLf
Response.Write FormatList(str)
%>
sålla ut och markera ord i en lista...
29 svar · 1 256 visningar · startad av Eclipse · sida 2 av 2
Frågan, av Eclipse
Jag har en topplista som jag vill plocka ut orden i. Markera orden i. 3 - ukrainas natur 1 - ukrainas ambassad 1 - ukraina visa 1 - ukraina turism 1 - sveriges ambassad i ukraina 1 - fakta om kiev 1 - fakta kiev 1 - allakiev Hur skriver jag med kod: Leta reda på alla ord mellan " - " och vbCRLF och gör dom i en speciell kod...
Läs frågan i sin helhet →Listan ser ut som den ser ut... Men om det nu är ett problem så får jag ta mig tid att skapa listan utifrån andra kriterier. Är det helt omöjligt att separera ord på detta viset!?
Att jag skrev: strText = strText & vbCRLF
berodde på att det inte fanns en radbrytning i slutet. Not a big deal. Det sista ordet fungerade inte.
Men texten blir ju FET. Det borde fungera...!? Ordet skrivs ju ut. Varför går det inte att skicka ordet som ett värde till en annan funktion? Det är sånt man kan undra...!
Eclipse skrev:
Men texten blir ju FET. Det borde fungera...!? Ordet skrivs ju ut. Varför går det inte att skicka ordet som ett värde till en annan funktion? Det är sånt man kan undra...!
Varför? Vi skickade inte vad RegExpet har hittat vi skickade in en sträng "$2" (mitt fel mest). Det är inte förrän efter CheckThisWord har körts vi kör RegExpets replace. Men funktionen ovan skall ha fixat det
Kolla koden ovan den skall fungera som du vill.
Vi skriver om varandra här. Jag har testat din kod.
****
OK, Gött mos, broder!
ÄNTLIGEN fungerar det! Det var nog FOR-loopen som gjorde skillnaden!!
Nu ska jag rensa i 2 km kod... och fixa med radbrytningar, med mera! Hinner inte det just nu.
Function FormatList(strText)
strText = strText & vbCRLF
Dim re
Set re = New RegExp
re.IgnoreCase = True
re.MultiLine = True
re.Global = True
re.Pattern = "\d+ - ([^\n]+)\n"
dim myMatches
Set myMatches = re.Execute(strText)
dim newText
For Each myMatch In myMatches
FormatList = FormatList & checkThisWord(myMatch.SubMatches(0))
Next
End Function
tog bort () från \d+ - då man inte verkar vara intresserad på att ha den som en "submatch". Och ändrade myMatch.SubMatches(1) till myMatch.SubMatches(0). Inte någon direkt prestanda ökning men om man inte behöver den så behöver man den inte ;)
bra att det fungera nu iallafall. Acceptera ett svar som lösning på din tråd för att hjälpa andra ;)
Ja!
Jag ska "Acceptera som slutgiltigt svar" men jag tänkte vänta tills jag fått allt att fungera - på riktigt så att säga - samt att du är (någorlunda) färdig med att redigera tidigare inlägg...! :-)
***
Red: Förslag!?
Bra att jag inte avslutat tråden. Två saker fungerar inte.
str = "3 - ukraina.se" & vbCrLf & "3 - ukrainas natur" & vbCrLf & "1 - ukrainas ambassad" & vbCrLf & "1 - ukraina visa" & vbCrLf & "1 - ukraina turism" & vbCrLf & "1 - sveriges ambassad i ukraina" & vbCrLf & "1 - fakta om kiev" & vbCrLf & "1 - fakta kiev" & vbCrLf & "1 - allakiev" & vbCrLf
1. samma som det du skrev, men första posten är ukraina.se
Resultatet blir inte ukraina, som det står i koden utan ukrainase. Bara punkten försvinner. Koden: replace(word, ".se", "") verkar inte köras.
***
2. Siffrorna försvinner!
3 - ukraina.se
3 - ukrainas natur
1 - ukrainas ambassad
1 - ukraina visa
1 - ukraina turism
1 - sveriges ambassad i ukraina
1 - fakta om kiev
1 - fakta kiev
1 - allakiev
***
OBS! Detta är fortfarande exempel!! Men det är viktigt att det står siffra , mellanslag, sträck mellanslag före ordet.
<%
Function FormatList(strText)
strText = strText & vbCRLF ' <-- ### OSB!! Måste vara med!!
Dim re
Set re = New RegExp
re.IgnoreCase = True
re.MultiLine = True
re.Global = True
re.Pattern = "\d+ - ([^\n]+)\n"
dim myMatches
Set myMatches = re.Execute(strText)
dim newText
For Each myMatch In myMatches
FormatList = FormatList & checkThisWord(myMatch.SubMatches(0))
Next
End Function
Function checkThisWord(word)
If Right(word,3) = ".se" Then word = Replace(word, ".se", "")
word = replace(word, " ", "")
word = replace(word, ".", "")
checkThisWord = "<b>" & word & " LEN: " & Len(word) - 1 & "</b><br>"
End Function
dim str
str = "3 - ukraina.se" & vbCrLf & "3 - ukrainas natur" & vbCrLf & "1 - ukrainas ambassad" & vbCrLf & "1 - ukraina visa" & vbCrLf & "1 - ukraina turism" & vbCrLf & "1 - sveriges ambassad i ukraina" & vbCrLf & "1 - fakta om kiev" & vbCrLf & "1 - fakta kiev" & vbCrLf & "1 - allakiev" & vbCrLf
Response.Write FormatList(str)
%>
<%
Function FormatList(strText)
[b]' Nej det behövs inte enligt de kriterier du har skickat till oss. Fungera enligt ditt exempel utan några problem.[/b]
'strText = strText & vbCRLF ' <-- ### OSB!! Måste vara med!!
Dim re
Set re = New RegExp
re.IgnoreCase = True
re.MultiLine = True
re.Global = True
re.Pattern = "[b](\d+ - )[/b]([^\n]+)\n"
dim myMatches
Set myMatches = re.Execute(strText)
dim newText
For Each myMatch In myMatches
FormatList = FormatList & [b]myMatch.SubMatches(0)[/b] & checkThisWord(myMatch.SubMatches([b]1[/b]))
Next
[b]Set re = Nothing[/b]
End Function
Function checkThisWord(word)
[b]Dim re
Set re = New RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "(.*?)(.se)?"
word = re.replace(word,"$1")
set re = Nothing[/b]
word = replace(word, " ", "")
word = replace(word, ".", "")
checkThisWord = "<b>" & word & " LEN: " & Len(word) - 1 & "</b><br>"
End Function
dim str
str = "3 - ukraina.se" & vbCrLf & "3 - ukrainas natur" & vbCrLf & "1 - ukrainas ambassad" & vbCrLf & "1 - ukraina visa" & vbCrLf & "1 - ukraina turism" & vbCrLf & "1 - sveriges ambassad i ukraina" & vbCrLf & "1 - fakta om kiev" & vbCrLf & "1 - fakta kiev" & vbCrLf & "1 - allakiev" & vbCrLf
Response.Write FormatList(str)
%>
Äntligen... Phew!
Vilken kamp! Ett stort tack till dig, broder! Du är verkligen duktig på regExp!
