1

私の入力文字列が~!@#$%^&*()_+{}:"<>?

正規表現を使用して各特殊文字の数を取得するにはどうすればよいですか? 例えば:

Regex.Matches(inputText, "each special character").Count;
4

6 に答える 6

3

これがあなたの質問に対する答えになるはずです:

Regex.Matches("Little?~ birds! like to@ sing##", "[~!@#$%^&*()_+{}:\"<>?]").Count

Count は 6 つの一致を返し、文を他の変数または別のものに変更する必要があります。

正規表現の詳細については、 http ://www.zytrax.com/tech/web/regex.htm を参照してください。

よろしくお願いします!

于 2013-10-09T15:31:40.230 に答える
3

すべての特殊文字を考えてそれらを合計する代わりに、別の方法で行います。すべての文字/数字を数え、それらをカウントから差し引きます。

シンプルなワンライナーでそれを行うことができます:

string input = "abc?&;3";
int numberOfSpecialCharacters = input.Length - input.Count(char.IsLetterOrDigit); //Gives 3

どちらに変更することもできます

int numberOfSpecialCharacters = input.Count(c => !char.IsLetterOrDigit(c));
于 2013-10-09T15:31:57.087 に答える
1

正規表現はこれを行う最良の方法ではありません。これがLinqベースのソリューションです

string chars = "~!@#$%^&*()_+{}:\"<>?";
foreach (var item in chars.Where(x=> !char.IsLetterOrDigit(x)).GroupBy(x => x))
{
    Console.WriteLine(string.Format("{0},{1}",item.Key,item.Count()));
}

各 spl 文字数をカウントする必要があることを理解しています。間違っている場合は訂正してください。

于 2013-10-09T15:31:42.557 に答える
0

しばらく経ちましたが、パスワードの検証を処理するために同様の回答が必要でした。VITAが言ったこととほとんど同じですが、同じことのためにそれを必要とする他の人のために、私の具体的な意見を以下に示します。

var pwdSpecialCharacterCount = Regex.Matches(item, "[~!@#$%^&*()_+{}:\"<>?]").Count;
var pwdMinNumericalCharacters = Regex.Matches(item, "[0-9]").Count;
var pwdMinUpperCaseCharacters = Regex.Matches(item, "[A-Z]").Count;
var pwdMinLowerCaseCharacters = Regex.Matches(item, "[a-z]").Count;
于 2017-01-05T11:04:26.067 に答える