私の入力文字列が~!@#$%^&*()_+{}:"<>?
正規表現を使用して各特殊文字の数を取得するにはどうすればよいですか? 例えば:
Regex.Matches(inputText, "each special character").Count;
私の入力文字列が~!@#$%^&*()_+{}:"<>?
正規表現を使用して各特殊文字の数を取得するにはどうすればよいですか? 例えば:
Regex.Matches(inputText, "each special character").Count;
これがあなたの質問に対する答えになるはずです:
Regex.Matches("Little?~ birds! like to@ sing##", "[~!@#$%^&*()_+{}:\"<>?]").Count
Count は 6 つの一致を返し、文を他の変数または別のものに変更する必要があります。
正規表現の詳細については、 http ://www.zytrax.com/tech/web/regex.htm を参照してください。
よろしくお願いします!
すべての特殊文字を考えてそれらを合計する代わりに、別の方法で行います。すべての文字/数字を数え、それらをカウントから差し引きます。
シンプルなワンライナーでそれを行うことができます:
string input = "abc?&;3";
int numberOfSpecialCharacters = input.Length - input.Count(char.IsLetterOrDigit); //Gives 3
どちらに変更することもできます
int numberOfSpecialCharacters = input.Count(c => !char.IsLetterOrDigit(c));
正規表現はこれを行う最良の方法ではありません。これが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 文字数をカウントする必要があることを理解しています。間違っている場合は訂正してください。
しばらく経ちましたが、パスワードの検証を処理するために同様の回答が必要でした。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;