4

Playfair Cipher を使用して暗号化しようとしている文字列内のすべての句読点とスペースを取り除こうとしています。この行が機能しない理由がわかりません。

s = Regex.Replace(s, @"[^\w\s]", string.Empty);
4

4 に答える 4

9

この[^\w\s]手段は、単語または空白文字以外のものをすべて削除します。

代わりにこれを試してください:

s = Regex.Replace(s, @"[^\w]", string.Empty);

以下を使用することもできます。

s = Regex.Replace(s, @"\W", string.Empty);

もちろん、アンダースコアは単語の文字と見なされるため、残ります。それらも削除するには、これを試してください:

s = Regex.Replace(s, @"[\W_]", string.Empty);

またはこれ:

s = Regex.Replace(s, @"\W|_", string.Empty);
于 2013-04-14T21:06:53.930 に答える
4

Regex の代わりに Linq を使用するのはどうですか?

string str = "abc; .d";
var newstr = String.Join("", str.Where(char.IsLetterOrDigit));
于 2013-04-14T21:10:17.463 に答える
1

^文字は、ないことを意味します。[^A-Za-z0-9-]英数字以外のすべてをハイフンに置き換えるために使用します。

于 2013-04-14T21:09:33.007 に答える
0

あなたの最善の策は、おそらくcontains[^A-Za-z]以来使用することです。これは、保持したくないと思います。\w_0-9

a-z次の正規表現は、 or以外のものをすべて削除しA-Zます。

s = Regex.Replace(s, @"[^A-Za-z]", string.Empty);
于 2013-04-14T21:13:00.367 に答える