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... ;)
------------------
Vide rox = new Vide();
rox.learn("C#");
webeye.nu
47 svar · 372 visningar · startad av voigtann1
har ett litet problem här:
msg = CStr(Replace(msg, "[blue", "<font color=""#0000FF"" "))
msg = CStr(Replace(msg, "[/blue", "</font"))
msg = CStr(Replace(msg, "]", ">"))
MEN jag vill att man ska både kunna göra:
etc etc
jag vet att man kan sätta dit alla dom här men det vill jag inte finns det något sätt att göra så att det kvittar hur man skriver ???:e
------------------
//voigtan
:: voigtan.org
"de går inte att lära en gammal norrläning byta namn på irc" - gammalt kinesiskt uttryck
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... ;)
------------------
Vide rox = new Vide();
rox.learn("C#");
webeye.nu
va?? fattar inte ett skit på den sidan.... =)) lol .. kan du förklara lite lättare+
------------------
//voigtan
:: voigtan.org
"de går inte att lära en gammal norrläning byta namn på irc" - gammalt kinesiskt uttryck
jag kanske förklarade lite dåligt här e koden som jag använder:
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
msg = Request.Form("meddelande")
msg = Server.HTMLEncode(msg)
msg = objRegExp.IgnoreCase = true
msg = CStr(Replace(msg, vbcrlf, "<br>"))
msg = CStr(Replace(msg, "[blue", "<font color=""#0000FF"" "))
msg = CStr(Replace(msg, "[/blue", "</font"))
msg = CStr(Replace(msg, "[red", "<font color=""#FF0000"" "))
msg = CStr(Replace(msg, "[/red", "</font"))
msg = CStr(Replace(msg, "[white", "<font color=""#FFFFFF"" "))
msg = CStr(Replace(msg, "[/white", "</font"))
msg = CStr(Replace(msg, "[red", "<font color=""#FF0000"" "))
msg = CStr(Replace(msg, "[/red", "</font"))
msg = CStr(Replace(msg, "[yellow", "<font color=""#FFFF00"" "))
msg = CStr(Replace(msg, "[/yellow", "</font"))
msg = CStr(Replace(msg, "[green", "<font color=""#008000"" "))
msg = CStr(Replace(msg, "[/green", "</font"))
msg = CStr(Replace(msg, "[color=#", "<font color=#"))
msg = CStr(Replace(msg, "[/color", "</font"))
msg = CStr(Replace(msg, "]", ">"))
det e till min gästbok typ så =)) jag e rätt ny på det här med ASP
------------------
//voigtan
:: voigtan.org
"de går inte att lära en gammal norrläning byta namn på irc" - gammalt kinesiskt uttryck
Eller så tar du bara det som de skrivit och gör en uppercase på... och därefter ersätter ...
.rickard
------------------
- Rickard
http://cherub.deca-production.net
"You say I'm beautiful. Well, I can't help it! You say I'm empty. We all know I'm full of shit!"
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! ;)
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>
det var ju inte så det var tänkt...
om man ersätter med versaler till
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.
------------------
- Rickard
http://cherub.deca-production.net
"You say I'm beautiful. Well, I can't help it! You say I'm empty. We all know I'm full of shit!"
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 =)
------------------
//voigtan
:: voigtan.org
"de går inte att lära en gammal norrläning byta namn på irc" - gammalt kinesiskt uttryck
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).
------------------
/ jeps0
[Redigerat av jepsO den 26 jun 2001]
Nope, fungerar inte alls.
Men till min andra fråga: hur gör jag med RegExp-Replace för att göra alla träffar versala?
------------------
/ jeps0
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:
strReplace = "b"
objRegExp.Replace(str, strReplace)
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?
------------------
/ jeps0
[Redigerat av jepsO den 26 jun 2001]
Eh, förklara för mig som verkar vara lite dum varför du vill konvertera texten till uppercase :q
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.
------------------
Vide rox = new Vide();
rox.learn("C#");
webeye.nu
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 :(.
------------------
/ jeps0
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... ;)
------------------
Vide rox = new Vide();
rox.learn("C#");
webeye.nu
Jag är inte så jättehaj på regExp men prova denna kod. :)
<%
'Testar RegExp
strText = "Text med [red] färgkoderna [/red] som [green] ska ersättas[/green]."
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "\[(blue)\]"
strText = objRegExp.Replace(strText,"<font color=""$1"">")
objRegExp.Pattern = "\[(red)\]"
strText = objRegExp.Replace(strText,"<font color=""$1"">")
objRegExp.Pattern = "\[(green)\]"
strText = objRegExp.Replace(strText,"<font color=""$1"">")
objRegExp.Pattern = "(\[/blue\]|\[/red\]|\[/green\])"
strText = objRegExp.Replace(strText,"</font>")
Response.write strText
%>
/JANspeed
hehee... fattar inte mycket här vad ni skriver =)) e nog allmänt trög lr ngt. ska jag ta bort min sånt och göra en ny lr vad?
------------------
//voigtan
:: voigtan.org
"de går inte att lära en gammal norrläning byta namn på irc" - gammalt kinesiskt uttryck
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