Jag föreslår att du använder Regular Expressions för det... skulle man lämna ute sluttaggen i din kod, så skulle allting efter det bli blått, vilket inte är så bra...
va?? fattar inte ett skit på den sidan.... =)) lol .. kan du förklara lite lättare
med tanke på att du postade ditt inlägg en minut efter det att vide postade länken så tycker jag nog att du inte kan ha läst ordentligt. det är rätt sätt att gå med regular expressions.
cherub: VAD SNYGGT DET BLIR NÄR ALLT MAN SKRIVER SOM SKA VARA BLÅTT OCKSÅ BLIR VERSALER!
då vet man ju att det alltid är i VERSALER... fast det kanske inte riktigt funkar så bra här kom jag på sedan... man måste ju ändå kolla de olika kombinationerna.
hehehe okey hade inte läst den riktigt men kollade igenom det... tror inte den skulle hjälpa mig =)) lol . läste igenom det fattar fortfarande inte... =) jag kanske bara helt enkelt ska ha hela tiden.. om någon skriver så e det deras problem =)
Jag satte mig ner och försökte klura ut hur det skulle lösas med RegExp. Följande Pattern kom jag fram till (som inte riktigt stämmer): \[(/\w{1,})|(\w{1,})\]
Min tanke är att första hitta "[", sedan "ord" eller "/ord" och slutligen "]". Problemet är att den tar med [] i "if-satsen", dvs ()|(). Detta gör att den antingen hittar [/ord eller ord], istället för [/ord] och [ord]. Har ingen större betydelse för själva replacen, men det är duktigt irriterande .
Sedan måste det väl gå att göra en replace-variabel som är en smula "dynamisk". I normala fall bruka det alltid vara strReplace = "nyttord", men jag skulle vilja ha nåt i stil med strReplace = ucase(item.Value).
IgnoreCase är väl bara att den inte bryr sig om stora/små bokstäver när den letar efter träffar? Såhär ser min kod ut hittills:
str = "[hejsan] på [/dejsan] mmm [aaa] [/i] [/b] [u]"
Set objRegExp = new RegExp
WITH objRegExp
.IgnoreCase = true
.Global = true
.Pattern = "\[(/\w{1,})|(\w{1,})\]"
END WITH
Nu undrar jag, hur ska jag får texten innanför [] att ersättas med enbart versaler? I normala fall skriver man ju nåt sånt här:
Jag tänkte först att jag kunde köra en FOR EACH item IN myMatches-grej och sen en satans massa stränghantering, men det borde ju gå att replaca direkt med objRegExp.Replace. Eller?
Eh, förklara för mig som verkar vara lite dum varför du vill konvertera texten till uppercase
Ser inte någon relevans i det... Det jag tänkte att du skulle använda RegEx till var att ersätta taggarna till riktiga taggar. Inte att konverter dom till UCase.
Möjligt att jag missförstod, men jag trodde att han redan hade kod som ersatte med <font color="blue">, men att det blev problem om han skrev . Egentligen är det väl smartare att köra RegExp rakt igenom, men jag har tidigare haft problem med att jag vill använda VBScript på träffarna, t.ex. som här att göra om dem till stora bokstäver.
Det går ju att skriva str = objRegExp.Replace(str, "<b>$1$2</b>") om jag vill göra träffarna feta, men hur implementerar jag ASP/VBScript i själva replacen? ucase("$1$2") fungerade inte .
Visst hade han en kod som konverterade, men problemet som jag sade i mitt första inlägg var att det finns en massa buggar i att göra på det viset, och att det skulle fungera bättre att använda RegEx...
men hur implementerar jag ASP/VBScript i själva replacen?
Det gör du inte (vad jag vet, mönstret är ju bara en sträng), det du får göra är att, som du säger, köra en "For Each" och köra en vanlig replace på dessa... Men detta behövs ju inte om du konverterar till taggar direkt... alltså är det en omväg...
Det min kod gör är precis vad det du ville skulle hända.
Prova att kopiera mitt script och sedan lägger du texten med [färg][/färg] koderna i variabeln strText så kommer du se resultatet. De färger du kan använda är blue, red och green.
Tex. [green]Denna text ska vara grön [/green].
Det funkar för mig i alla fall.
/JANspeed
256 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a