计算字符串中零的数量

5

我有一个字符串如下:51200000000000000000000000000000

这个字符串是不固定的。它将根据电路板数量进行追加,如果有两个电路板,则字符串将如下所示:5120000000000000000000000000000052200000000000000000000000000000

我想知道如何计算字符串中零的数量。

我正在使用以下代码,但如果有超过两个电路板,则不够灵活。

string str = "51200000000000000000000000000000";
string zeros = "00000000000000000000000000000";
if (str.Contains(zeros))
{
     Console.WriteLine("true");
}
else
{
     Console.WriteLine("false");
}

将字符串转换为字符数组并循环。 - Prashant
  1. 使用简单的 for 循环遍历字符串中的字符
  2. 计算零的个数
- zerkms
@Prashant String 已经有索引器了。 - zerkms
你的意思是要计算字符串中子串中最大的“0”的数量吗? - Jswq
6个回答

9
您可以使用以下代码来实现此操作,它将为您提供零的数量(示例)。
char matchChar='0';
string strInput = "51200000000000000000000000000000";
int zeroCount = strInput.Count(x => x == matchChar); // will be 29

你可以通过迭代每个字符并检查它是否是所需的字符(比如0),然后取其计数,来实现相同的功能。

针对社区的一点说明:尽管这个答案在技术上更为简洁,但另一个鼓励算法思维(从解决任意任务的角度来看更好,因为那是一种技能)。 - zerkms
致社区的一封信:虽然我同意@zerkms的观点,但我认为将这一点推向其逻辑极端会暗示着用汇编语言编写此代码会更好,以鼓励算法思维。;-) - Enigmativity
@Enigmativity OP 无法编写循环,而被选中的答案是 LINQ。我看到了答案和对其理解需求之间的巨大差距。我同意实用主义应该优先于极端主义,但当 OP 还没有掌握基本技能时,教他们 LINQ 有点为时过早(我的观点)。 - zerkms
1
@zerkms - 我同意你的观点。 - Enigmativity
1
@zerkms 我觉得有必要解释一下我的情况。我以前写过for循环和Linq。我选择这个答案的原因是因为我被迫为一个即将在几个月内上市的产品编写代码,但我对C#的知识有限,我现在知道两种方法,但我更喜欢在我的代码中使用Linq,看起来更专业。 - active92

8

使用简单的foreach循环遍历字符串并计数:

int CountZeroes(string str)
{
    // TODO: error checking, etc.
    int count = 0;
    foreach (var character in str)
    {
        if (character == '0') count++;
    }

    return count;
}

3
稍微高级一点(或者说更高级一些)的技巧是将 string 转换为 char array,然后再转换为 list of chars,最后使用 LINQ
        string str = "51200000000000000000000000000000";

        List<char> nums = str.ToCharArray().ToList();

        Console.WriteLine(nums.Where(x => x.Equals('0')).Select(x => x.ToString()).Count());

我只是把这个放在这里,以便你学习不仅仅是一种方法 :)

您可以跳过 .Select(x => x.ToString()) 并直接在 where 后应用 .Count(),因为您也可以将 where 应用于 str,因此不需要使用 nums - sujith karivelil
实际上,尽管在将来使用LINQ语法时,人们肯定会使用select。 :D 如果您正在迭代仅包含数字的字符串,则还可以使用List<int> :) - TheQuestioner

2
使用 System.Linq
int count0s = str.Count(z => z == '0');

将返回您的 str 字符串中有多少个 0


0

它也可以使用for循环和Substring实现。

代码

string str = "51200000000000000000000000000000";
int n = 0;
for (int i = 0; i < str.Length; i++)
{
    if (str.Substring(i, 1) == "0")
    n += 1;
}
Console.WriteLine("Count : " + n.ToString());

工作的fiddle演示


0

代码:

    string st;
        st = textBox1.Text;
        int countch = 0, i;
        for (i = 0; i < st.Length; i++)
            if (st[i]=='0') countch++;           
        MessageBox.Show(countch.ToString());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接