0

これは簡単なはずです。

文字、数字、空白以外の文字を空の文字列に置き換えようとしています。

 title = Regex.Replace(title, "[^A-Z0-9\\ ]", "");

正規表現は、C# エンジンを使用していると思われる Regex Hero http://regexhero.net/tester/で正しく動作します。

ただし、私のコードでは、文字列「Case Study 5」に対してタイトルが「5」になり、否定を無視しているように見えます。

http://msdn.microsoft.com/en-us/library/20bw873z.aspxによると、私の構文は正しいです。

何が起こっている?

4

2 に答える 2

2

正規表現を使用する必要はありません:

title = new string(title.Where(c => char.IsLetterOrDigit(c) || c == ' ').ToArray());
于 2013-11-07T13:20:22.457 に答える
1

私はあなたがこれを望んでいると思います:

 title = Regex.Replace(title, "[^a-zA-Z0-9\\ ]", "");

注: これにより、文字であるが az 文字の間にない é、è なども削除されることに注意してください。それらを保持したい場合は、このようなものが必要になる場合があります

 title = Regex.Replace(title, @"[^\w\ ]", "");

したがって、「Case Stu-dy 5」は「Case Study 5」になります。

于 2013-11-07T13:16:03.283 に答える