たとえば、数字と文字を含む文字列が与えられた場合
Mi2ch£al
文字以外のすべて(したがって、数字と文字)を削除するための適切な正規表現は何でしょうか?
また、このタスクには .NET 2.0 を使用しています。
Linq を使用してもかまわない場合:
string s = new string("Mi2ch£al".Where(c => !char.IsNumber(c) && !char.IsLetter(c)).ToArray());
\p{L}
\P{L}
文字である任意の文字と、文字ではない任意の文字 (非ラテン文字セット、アクセント付き文字などを含む) に一致します。したがって、次のように簡単に使用できます。
Regex.Replace(input, @"\P{L}", String.Empty)
はinput
入力文字列です。
string s = "Mi2ch£al";
s = Regex.Replace(s, @"[^\w\s]", "");
国際的なアクセント付き文字が必要ない場合は、次のようにします。
string s = "Mi2ch£al";
s = Regex.Replace(s, @"[^a-zA-Z0-9\s]", "");
[^a-zA-Z]
正規表現を空の文字列に置き換えるか[^a-zA-Z\s]
、スペースを節約します