簡體   English   中英

C#計算數字和字母

[英]C# Counting numbers & letters

我想計算在我正在檢查的行中使用了多少數字( 僅0、1、2、3 )和字母( a,b,c,d )-它們是混合的,例如: 3b1c1c1a1a1a0b1a1d3d0a3c 我怎么算呢?

int numbers = 0;
int letters = 0;

foreach(char a in myString)
{
  if (Char.IsDigit(a))
    numbers ++;
  else if (Char.IsLetter(a)){
    letters ++;
}

如果需要重新使用預定義的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();

有一種方法可以做到這一點:

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();

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

             for(int i = 0 ; i < str.Length ; i++){
             int asciicode = (int)str[i];
             if(asciicode >= 48 && asciicode <= 57)
                        number++;
             else
                      alphabet++;                 
      } 

這是查找字符“ 1”的計數的示例:

        string input = "3b1c1c1a1a0b1a1d3d0a3c";
        int count = input.ToArray().Count(i => i == '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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM