如何使用正则表达式获取字符串中仅特殊字符的计数
本文关键字:特殊字符 何使用 正则表达式 获取 字符串 | 更新日期: 2023-09-27 18:34:40
如果我的输入字符串是~!@#$%^&*()_+{}:"<>?
如何使用正则表达式获取每个特殊字符的计数?例如:
Regex.Matches(inputText, "each special character").Count;
这应该是您问题的答案:
Regex.Matches("Little?~ birds! like to@ sing##", "[~!@#$%^&*()_+{}:'"<>?]").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 字符数。如果我弄错了,请纠正我。
非正则表达式方式(听起来容易得多(是列出要检查的字符,并使用 Linq 查找这些字符的数量。
string inputString = "asdf1!%jkl(!*";
List<char> charsToCheckFor = new List<char>() { '!', '@', '#', ..... };
int charCount = inputString.Count(x => charsToCheckFor.Contains(x));
我让你写下所有你需要检查的字符,因为你需要弄清楚你想要什么。
如果你想遵循其他方法,那么你可以使用。
string str = "@123:*&^789'!@#$*()_+=";
int count = 0;
foreach (char c in str)
{
if (!char.IsLetterOrDigit(c.ToString(),0))
{
count++;
}
}
MessageBox.Show(count.ToString());
已经
有一段时间了,我需要类似的答案来处理密码验证。几乎是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;