PowerShell - "ss" -eq "ß" - ergibt True
Wie der Betreff schon sagt: In PowerShell ergibt
$True
Wie kann man das korrekt (und einfach) vergleichen?
Ich helfe mir jetzt aus mit:
aber das kann doch nicht die Lösung sein.
E.
"ss" -eq "ß"
Wie kann man das korrekt (und einfach) vergleichen?
Ich helfe mir jetzt aus mit:
$Text1 = "Wort mit ss."
$Text2 = "Wort mit ß."
$Text1.Replace($Text2,"") -eq ""
E.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 668378
Url: https://administrator.de/contentid/668378
Ausgedruckt am: 18.11.2024 um 13:11 Uhr
5 Kommentare
Neuester Kommentar
Ein einfacher Weg ist mir nicht bekannt.
Ich kenne nur die Umrechnung in Bytes und dann den Vergleich dessen..
Man könnte sich natürlich ne Funktion bauen, die den Vergleich übernimmt.
Powershell's -eq berücksichtigt irgendwelche Unicode-Normalisierungen :/
Ich kenne nur die Umrechnung in Bytes und dann den Vergleich dessen..
$bytes1 = [System.Text.Encoding]::UTF8.GetBytes("ss")
$bytes2 = [System.Text.Encoding]::UTF8.GetBytes("ß")
# Vergleiche die Länge
if ($bytes1.Length -ne $bytes2.Length) {
$isEqual = $false
} else {
# Vergleiche die Bytes ansich
$isEqual = $true
for ($i = 0; $i -lt $bytes1.Length; $i++) {
if ($bytes1[$i] -ne $bytes2[$i]) {
$isEqual = $false
break
}
}
}
$isEqual
Man könnte sich natürlich ne Funktion bauen, die den Vergleich übernimmt.
Powershell's -eq berücksichtigt irgendwelche Unicode-Normalisierungen :/
Oder
bzw. case insensitive
Oder
usw.
[string]::Equals('ss','ß')
[string]::Equals('ss','ß','OrdinalIgnoreCase')
'ss' -match '^ß$'