Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#计数和;信件_C#_Counting - Fatal编程技术网

C#计数和;信件

C#计数和;信件,c#,counting,C#,Counting,我想数一数我正在检查的一行中使用了多少数字(只有0,1,2,3)和字母(a、b、c、d)——它们是混合的,例如:3b1c1a1a1a1d3d0a3c。我怎么计算呢?有一种方法可以做到这一点: int numbers = 0; int letters = 0; foreach(char a in myString) { if (Char.IsDigit(a)) numbers ++; else if (Char.IsLetter(a)){ letters ++; } i

我想数一数我正在检查的一行中使用了多少数字(只有0,1,2,3)和字母(a、b、c、d)——它们是混合的,例如:3b1c1a1a1a1d3d0a3c。我怎么计算呢?

有一种方法可以做到这一点:

int numbers = 0;
int letters = 0;

foreach(char a in myString)
{
  if (Char.IsDigit(a))
    numbers ++;
  else if (Char.IsLetter(a)){
    letters ++;
}
int count = myString.ToCharArray().Where(c => Char.IsLetterOrDigit(c)).Count();
如果要将其拆分,请执行以下操作:

int letterCount = myString.ToCharArray().Where(c => Char.IsLetter(c)).Count();
int numberCount = myString.ToCharArray().Where(c => Char.IsDigit(c)).Count();
如果要根据数字对其进行筛选:

 List<char> searchFor = new List<char>() { '0', '1', '2', '3' };
 int numberCount = myString.ToCharArray().Where(c => searchFor.Contains(c)).Count();
List searchFor=newlist(){'0','1','2','3'};
int numberCount=myString.ToCharArray().Where(c=>searchFor.Contains(c)).Count();

有一种方法可以做到这一点:

int count = myString.ToCharArray().Where(c => Char.IsLetterOrDigit(c)).Count();
如果要将其拆分,请执行以下操作:

int letterCount = myString.ToCharArray().Where(c => Char.IsLetter(c)).Count();
int numberCount = myString.ToCharArray().Where(c => Char.IsDigit(c)).Count();
如果要根据数字对其进行筛选:

 List<char> searchFor = new List<char>() { '0', '1', '2', '3' };
 int numberCount = myString.ToCharArray().Where(c => searchFor.Contains(c)).Count();
List searchFor=newlist(){'0','1','2','3'};
int numberCount=myString.ToCharArray().Where(c=>searchFor.Contains(c)).Count();

您可以使用ASCII代码使其正常工作

             for(int i = 0 ; i < str.Length ; i++){
             int asciicode = (int)str[i];
             if(asciicode >= 48 && asciicode <= 57)
                        number++;
             else
                      alphabet++;                 
      } 
for(int i=0;i如果(ascicode>=48&&ascicode,则可以使用ASCII代码使其工作

             for(int i = 0 ; i < str.Length ; i++){
             int asciicode = (int)str[i];
             if(asciicode >= 48 && asciicode <= 57)
                        number++;
             else
                      alphabet++;                 
      } 
for(int i=0;i如果(ascicode>=48&&ascicode这是一个查找字符“1”计数的示例:


这是一个查找字符“1”计数的示例:


以下内容符合您的要求:

string acceptedChars = "0123abcd";

var res = "3b1c1c1a1a0b1a1d3d0a3c".ToCharArray()
    .Where(x => acceptedChars.Contains(x))
    .GroupBy(x => char.IsDigit(x))
    .Select(g => new{ isDigit = g.Key, count = g.Count() } );

var digitsCount = res.Single(r => r.isDigit == true).count;
var lettersCount = res.Single(r => r.isDigit == false).count;

以下内容符合您的要求:

string acceptedChars = "0123abcd";

var res = "3b1c1c1a1a0b1a1d3d0a3c".ToCharArray()
    .Where(x => acceptedChars.Contains(x))
    .GroupBy(x => char.IsDigit(x))
    .Select(g => new{ isDigit = g.Key, count = g.Count() } );

var digitsCount = res.Single(r => r.isDigit == true).count;
var lettersCount = res.Single(r => r.isDigit == false).count;

如果需要重复使用预定义的Linq表达式,也可以使用这些表达式:

var characterList = "234234abce".ToCharArray();
var validCharacters = "0123abcd".ToCharArray();

Func<char, bool> ValidLetter = delegate(char c){
    return Char.IsLetter(c) && validCharacters.Contains(c);
};
Func<char, bool> ValidNumber = delegate(char c){
    return Char.IsDigit(c) && validCharacters.Contains(c);
};

var letterCount = characterList.Where(c => ValidLetter(c)).Count();
var numberCount = characterList.Where(c => ValidNumber(c)).Count();
var characterList=“234234abce”.tocharray();
var validCharacters=“0123abcd”.tocharray();
Func ValidLetter=委托(字符c){
返回字符(c)和有效字符(c);
};
Func ValidNumber=委托(字符c){
返回字符IsDigit(c)和有效字符Contains(c);
};
var letterCount=characterList.Where(c=>ValidLetter(c)).Count();
var numberCount=characterList.Where(c=>ValidNumber(c)).Count();

如果需要重复使用预定义的Linq表达式,也可以使用这些表达式:

var characterList = "234234abce".ToCharArray();
var validCharacters = "0123abcd".ToCharArray();

Func<char, bool> ValidLetter = delegate(char c){
    return Char.IsLetter(c) && validCharacters.Contains(c);
};
Func<char, bool> ValidNumber = delegate(char c){
    return Char.IsDigit(c) && validCharacters.Contains(c);
};

var letterCount = characterList.Where(c => ValidLetter(c)).Count();
var numberCount = characterList.Where(c => ValidNumber(c)).Count();
var characterList=“234234abce”.tocharray();
var validCharacters=“0123abcd”.tocharray();
Func ValidLetter=委托(字符c){
返回字符(c)和有效字符(c);
};
Func ValidNumber=委托(字符c){
返回字符IsDigit(c)和有效字符Contains(c);
};
var letterCount=characterList.Where(c=>ValidLetter(c)).Count();
var numberCount=characterList.Where(c=>ValidNumber(c)).Count();


string.GroupBy(str=>str.IsDigit)。选择(g=>g.Count()).ToList()
-未测试,但第一个数字应为数字,第二个数字letters@Timothy,实际上还不重要,因为每一个都不能正常工作,@.Vixen总共有多少个,对不起@.user3596113啊,很抱歉提到它,它实际上并不重要。它是一个.txt文件的一行@。Sayse:“'string'不包含'GroupBy'的定义。我遗漏了什么吗?对不起,我通常不会用c#@DenisWasilew为
string
变量编写任何东西。您将获得
GroupBy
@DenisWasilew-请参见Ians答案,但老实说,我更喜欢David Pilkingtons答案。每个变量有多少个,或者总共有多少个?
string.GroupBy?”(str=>str.IsDigit)。选择(g=>g.Count()).ToList()
-未测试,但第一个数字应为数字,第二个数字letters@Timothy,实际上还不重要,因为每一个都不能正常工作,@.Vixen总共有多少个,对不起@.user3596113啊,很抱歉提到它,它实际上并不重要。它是一个.txt文件的一行@。Sayse:““string”不包含“GroupBy”的定义"。我遗漏了什么吗?对不起,我通常不会用c#@DenisWasilew为
string
变量编写任何东西。您将获得
GroupBy
@DenisWasilew-请参见Ians答案,但老实说,我更喜欢大卫·皮尔金顿的答案。看起来这是解决我问题的方法。非常感谢您的帮助,我将在4分钟内接受。@Vixen-这不是一个有效的编辑,你完全改变了他的答案。你应该向大卫建议类似的事情,而不是实施它们。@DenisWasilew真棒,很高兴我能这么做help@Vixen除了0,1,2,3没有其他数字,所以我认为没有必要检查它们是否为0,1,2,3,第一个解决方案很好。再次感谢大家。@DenisWasilew,不清楚您是只想数到0,1,2,3,还是只想数到那些现有的书,比如这是我问题的解决方案。非常感谢您的帮助,我将在4分钟内接受它。@Vixen-这不是一个有效的编辑,您完全更改了他的答案。您应该为David提出类似的建议,而不是实施它们。@DenisWasilew awome,g小伙子,我能help@Vixen除了0,1,2,3之外,没有其他数字,所以我认为没有必要检查它们是否为0,1,2,3,第一个解决方案很好。再次感谢你们所有人。@DenisWasilew,不清楚您是否只想计算0,1,2,3,或者是否只有那些存在的.NET的System.String类型包含已计数的Unicode/UTF-16代码单元数组(
char
type value)。单个UTF-16代码单元不一定代表一个码点(字符集中字符的数字标识符),因为UTF-16使用两个代码单元(称为代理项对,一个“高”一个“低”)对一些Unicode字符进行编码.高、低代理和未配对的代码单元具有不同的范围,因此您可以通过检查单个代码单元来实现此特定目标,因为要查找的八个字符都是单个代码单元的代码点..NET的系统。字符串类型保存Unicode/UTF-16代码单元的计数数组(
char
type value)。单个UTF-16代码单元不一定表示码点(字符集中字符的数字标识符),因为UTF-16使用两个代码单元(称为代理项对,一个“高”和一个“低”)对某些Unicode字符进行编码。高、低代理项和未配对的代码单元具有不同的范围,因此您可以