C#——计算字符串中单个数字(int)的出现次数——不使用int到char转换的变量



我正在计算字符串中int出现的次数

int count = numbers
.Where(x => x == '0')
.Count();

如果我键入上面"0"所示的要检查的文字编号,它会起作用。但我想用这个方法来检查其他数字。不幸的是,当我将int转换为char并插入数字变量时,这不起作用

char digit = Convert.ToChar(0);
int count= numbers
.Where(x => x == digit)
.Count();

我做错了什么?

Convert.ToChar(Int32)返回与传递的int值相等的Unicode字符。例如,它将65转换为A:

Console.WriteLine(Convert.ToChar(65)); // prints "A"

如果我正确理解您的要求,您可以调用ToString并获取结果字符串的第一个字符,而不是Convert.ToChar(0):

char digit = 0.ToString()[0]

或者正如这个答案所暗示的:

char c = (char)(i + 48);

转换。ToChar(0(根据字符编码表(例如ASCII(将您的位表示转换为。在这种情况下,0是Null字符。而根据表,"0"字符的位表示为48

您可以使用此代码段将int数字与字符进行比较

string numbers = "33";
int digit = 3;
int count = numbers
// '0' -'0' (48 - 48) will give you 0 int value, 
// '1' - '0' (49 - 48) will give you 1 etc.
.Where(x => x - '0' == digit) 
.Count();

但请记住,您的数字可能大于9,那么它将需要多个字符,这将是一个不同的问题。

相关内容

  • 没有找到相关文章

最新更新