C# 如何使用正则表达式获取字符串中唯一特殊字符的计数?

C# 如何使用正则表达式获取字符串中唯一特殊字符的计数?,c#,C#,如果我的输入字符串是~!@$%^&*():? 如何使用正则表达式获取每个特殊字符的计数?例如: Regex.Matches(inputText, "each special character").Count; 如果您想采用其他方法,则可以使用 string str = "@123:*&^789'!@#$*()_+="; int count = 0; foreach (char c in str) {

如果我的输入字符串是
~!@$%^&*():?

如何使用正则表达式获取每个特殊字符的计数?例如:

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

如果您想采用其他方法,则可以使用

string str =  "@123:*&^789'!@#$*()_+=";
            int count = 0;
            foreach (char c in str)
            {
                if (!char.IsLetterOrDigit(c.ToString(),0))
                {
                    count++;
                }
            }
            MessageBox.Show(count.ToString());

如果您想采用其他方法,则可以使用

string str =  "@123:*&^789'!@#$*()_+=";
            int count = 0;
            foreach (char c in str)
            {
                if (!char.IsLetterOrDigit(c.ToString(),0))
                {
                    count++;
                }
            }
            MessageBox.Show(count.ToString());

这应该是你问题的答案:

Regex.Matches("Little?~ birds! like to@ sing##", "[~!@#$%^&*()_+{}:\"<>?]").Count
Regex.Matches(“小?~鸟!喜欢@sing###“,”[~!@$%^&*()“+{}:\”?])。计数
Count应该返回6个匹配项,将句子更改为其他变量或其他内容

您可以在此处找到有关正则表达式的更多信息:


致以最良好的祝愿

这应该是您问题的答案:

Regex.Matches("Little?~ birds! like to@ sing##", "[~!@#$%^&*()_+{}:\"<>?]").Count
Regex.Matches(“小?~鸟!喜欢@sing###“,”[~!@$%^&*()“+{}:\”?])。计数
Count应该返回6个匹配项,将句子更改为其他变量或其他内容

您可以在此处找到有关正则表达式的更多信息:


致以最诚挚的问候!

正则表达式并不是最好的方法。下面是基于
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()));
}
string chars=“~!@$%^&*()_+{}:\"?";
foreach(chars.Where(x=>!char.isleterordigit(x)).GroupBy(x=>x))中的变量项
{
WriteLine(string.Format(“{0},{1}”,item.Key,item.Count());
}

我知道您需要计算每个spl字符数。如果我弄错了,请纠正我。

正则表达式不是最好的方法。以下是基于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()));
}
string chars=“~!@$%^&*()\+{}:\”;
foreach(chars.Where(x=>!char.isleterordigit(x)).GroupBy(x=>x))中的变量项
{
WriteLine(string.Format(“{0},{1}”,item.Key,item.Count());
}

我知道您需要计算每个spl字符的计数。如果我弄错了,请纠正我。

不要考虑每个特殊字符并将它们相加,而是用另一种方法;计算每个字母/数字,然后从计数中减去它们

您可以通过一个简单的单行线来实现这一点:

string input = "abc?&;3";
int numberOfSpecialCharacters = input.Length - input.Count(char.IsLetterOrDigit); //Gives 3
您也可以将其更改为

int numberOfSpecialCharacters = input.Count(c => !char.IsLetterOrDigit(c));

不要想着每个特殊字符并把它们加起来,而是用另一种方法;数一数每个字母/数字,然后从计数中减去它们

您可以通过一个简单的单行线来实现这一点:

string input = "abc?&;3";
int numberOfSpecialCharacters = input.Length - input.Count(char.IsLetterOrDigit); //Gives 3
您也可以将其更改为

int numberOfSpecialCharacters = input.Count(c => !char.IsLetterOrDigit(c));
非正则表达式的方法(听起来容易得多)可以创建要检查的字符列表,并使用Linq查找这些字符的计数

string inputString = "asdf1!%jkl(!*";

List<char> charsToCheckFor = new List<char>() { '!', '@', '#', ..... };

int charCount = inputString.Count(x => charsToCheckFor.Contains(x));
string inputString=“asdf1!%jkl(!*”;
List charsToCheckFor=新列表(){'!','@','#',…};
int charCount=inputString.Count(x=>charsToCheckFor.Contains(x));
我让你写下所有需要检查的字符,因为你需要弄清楚你想要的是什么。

非正则方法(听起来更容易)可以列出要检查的字符,并使用Linq查找这些字符的计数

string inputString = "asdf1!%jkl(!*";

List<char> charsToCheckFor = new List<char>() { '!', '@', '#', ..... };

int charCount = inputString.Count(x => charsToCheckFor.Contains(x));
string inputString=“asdf1!%jkl(!*”;
List charsToCheckFor=新列表(){'!','@','#',…};
int charCount=inputString.Count(x=>charsToCheckFor.Contains(x));

我让你写下你需要检查的所有字符,因为你需要弄清楚你想要什么。

已经有一段时间了,我需要一个类似的答案来处理密码验证。这和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;
var pwdSpecialCharacterCount=Regex.Matches(项,“[~!@$%^&*”(“+{}:\”?])。计数;
var pwdMinNumericalCharacters=Regex.Matches(项“[0-9]”)。计数;
var pwdMinUpperCaseCharacters=Regex.Matches(项“[A-Z]”)。计数;
var pwdminowercasecharacters=Regex.Matches(项“[a-z]”)。计数;

已经有一段时间了,我需要一个类似的答案来处理密码验证。这和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;
var pwdSpecialCharacterCount=Regex.Matches(项,“[~!@$%^&*”(“+{}:\”?])。计数;
var pwdMinNumericalCharacters=Regex.Matches(项“[0-9]”)。计数;
var pwdMinUpperCaseCharacters=Regex.Matches(项“[A-Z]”)。计数;
var pwdminowercasecharacters=Regex.Matches(项“[a-z]”)。计数;

有什么特别的原因要使用正则表达式吗?什么算是“特殊”呢"你认为是字符吗?这是我需要遵循的方法。我们键盘上除了字母和数字以外的所有可用字符。@user1618587你是指非A-Z和非0-9吗?其他语言呢?@user1618587:我们怎么知道你键盘上的字符?你的键盘有一个键吗?它有一个吗?或者€?您最好的方法是计算允许的字符数,然后从所有字符数中减去它。您想为此使用正则表达式的具体原因是什么?什么算作“特殊”你认为是字符吗?这是我需要遵循的方法。我们键盘上除了字母和数字以外的所有可用字符。@user1618587你是指非A-Z和非0-9吗?其他语言呢?@user1618587:我们怎么知道你键盘上的字符?你的键盘有一个键吗?它有一个吗?或者€?更好的方法是计算允许的字符数,然后从所有字符数中减去它。