PowerShell glaubt, 'i' sei kein ASCII-Zeichen

10/12/2012 - 16:09 von Christoph Schneegans | Report spam
Hallo allerseits!

Ich möchte mit einem regulàren Ausdruck in PowerShell alle Nicht-
ASCII-Zeichen (d.h. die Unicode-Zeichen ab U+0080) in einem
String löschen.

"aeiouàöü" -replace '[\u0080-\uffff]', ''

sollte eigentlich die Ausgabe

aeiou

erzeugen, tatsàchlich erhalte ich aber

aeou,

d.h. das 'i' wird ebenfalls gelöscht.

Kann vielleicht jemand überprüfen, was in PowerShell 3.0 passiert?
Ich habe hier Windows XP und kann deshalb nur mit 2.0 testen.

Ein m.E. àquivalentes VB.NET-Programm mit der Anweisung

Console.Out.WriteLine(Regex.Replace("aeiouàöü", "[\u0080-\uffff]", ""))

macht es richtig, d.h. es gibt

aeiou

aus.

<http://schneegans.de/computer/safer/> · SAFER mit Windows
 

Lesen sie die antworten

#1 Stefan Reuther
10/12/2012 - 19:19 | Warnen spam
Christoph Schneegans wrote:
Ich möchte mit einem regulàren Ausdruck in PowerShell alle Nicht-
ASCII-Zeichen (d.h. die Unicode-Zeichen ab U+0080) in einem
String löschen.

"aeiouàöü" -replace '[\u0080-\uffff]', ''

sollte eigentlich die Ausgabe

aeiou

erzeugen, tatsàchlich erhalte ich aber

aeou,

d.h. das 'i' wird ebenfalls gelöscht.



Arbeitet das Ding zufàlligerweise case-insensitive, und kann man ihm das
abgewöhnen?

'i' hat neben dem Großbuchstaben 'I', den wir alle kennen, auch noch den
Großbuchstaben 'İ' (\u0130).


Stefan

Ähnliche fragen