10. maj 2004 - 12:46
Der er
5 kommentarer og
1 løsning
Problemer med Replace
Hej ..
Jeg skal bruge Replace til at ændre Æ, Ø, Å til AE, OE, AA
Den sødvanelige problematik.
Jeg har det problem, at Replace tilsyneladende ikke kan kende forskel på Store og små bogstaver. Og det er et problem.
Nogen der ved hvordan man kunne uden om den?
Fx.:
strTekstStreng = "Hej med dig jeg æ ø og å"
strTekstStreng = Replace(LCase(strTekstStreng), "æ", "ae")
strTekstStreng = Replace(LCase(strTekstStreng), "ø", "oe")
strTekstStreng = Replace(LCase(strTekstStreng), "å", "aa")
//>Rune
Nej det løser ikke problemet, for jeg vil gerne have STORT Ø Erstattet med Oe og Lille ø med oe osv.
Jeg har fundet ud af det. InStr kan godt kende forskel, så jeg har gjort følgende. Det er ikke kønt, men det virker.
If InStr(1, UName, "Ø", vbTextCompare) Then
UName = Replace(UName, "Ø", "O", 1, -1, vbBinaryCompare)
End If
If InStr(1, UName, "ø", vbTextCompare) Then
UName = Replace(UName, "ø", "o", 1, -1, vbBinaryCompare)
End If
If InStr(1, UName, "Å", vbTextCompare) Then
UName = Replace(UName, "Å", "Aa", 1, -1, vbTextCompare)
End If
If InStr(1, UName, "å", vbTextCompare) Then
UName = Replace(UName, "å", "aa", 1, -1, vbTextCompare)
End If
If InStr(1, UName, "Æ", vbTextCompare) Then
UName = Replace(UName, "Æ", "Ae", 1, -1, vbTextCompare)
End If
If InStr(1, UName, "æ", vbTextCompare) Then
UName = Replace(UName, "æ", "ae", 1, -1, vbTextCompare)
End If
replace kender forskel på store og små bogstaver, da den sammenligner binært som default. Kør dette script og se selv:
str = "denne indeholder å og Å"
Response.write( Replace( str, "å", "xx", 1, LEN( str ), 1 ) )
Response.Write( "<br>" )
Response.write( Replace( str, "å", "xx" ) )
Det du kan gøre, er at bruge arrays:
Dim arrSpecialChars : arrSpecialChars = Array( "æ", "ø", "å" )
Dim arrReplaceChars : arrReplaceChars = Array( "ae", "oe", "aa" )
str = "denne indeholder å og Å, æ og Æ samt ø og Ø"
for i = 0 to UBOUND( arrSpecialChars )
str = Replace( str, arrSpecialChars(i), arrReplaceChars(i) )
str = Replace( str, UCASE( arrSpecialChars(i) ), UCASE( arrReplaceChars(i) ) )
next
Response.write( str )
/nute