【问题标题】:Add up al numbers in a string C#将字符串中的所有数字相加C#
【发布时间】:2014-05-15 12:31:43
【问题描述】:

我想将一个字符串中的所有数字相加,
我相信这可以通过for loop 轻松完成。
我有:

int numbers = 1234512345;

for (int i = 0 ; i numbers.Length ; i++)        
{            
    int total;            
    total = int [i];
}

但它不起作用是有原因的,我很困惑。

【问题讨论】:

  • 字符串在哪里?编译器给你的错误信息应该给你一个关于这里有什么问题的线索。我建议您删除所有代码,然后一次添加一段,并找出它无法编译的原因,因为这里有太多错误,您需要从某个地方开始。

标签: c# string loops numbers int


【解决方案1】:

这应该做你想做的事

int total = 0;
foreach(char numchar in numbers)
{
     total += (int)char.GetNumericValue(numchar);
}

编辑:

1行解决方案:

 int total = numbers.Sum(x=> (int)char.GetNumericValue(x));

PS:为什么投反对票?

【讨论】:

  • 我一定错过了文档中可以迭代整数的字符的部分。
  • 只需添加 char.GetNumericValue 即可。我测试了一下...我只是快速编写代码,没有想到 to int 转换会采用 ASCII 值
  • 添加1行解决方案
  • 反对票是因为您的原始解决方案不起作用,因为他试图添加的“字符串”实际上是一个 int,而您正在迭代一个 int 的“字符”。此外,您的新解决方案并不完全有效。当你有一个包含字母和数字的字符串时会发生什么?
  • 那可能应该包含在答案中,而不是假设 OP 会被其他人纠正。
【解决方案2】:

首先,您尝试迭代的“字符串”是一个 int。您的意思可能类似于

string numbers = "1234512345"

之后,有几种方法可以做到这一点,我个人最喜欢的是迭代字符串的每个字符,在其上使用 TryParse(如果字符串碰巧是字母数字,这将消除任何问题)并汇总结果。见下文:

    static void Main(string[] args) {
        string numbers = "1234512345";
        int total = 0;
        int num; // out result

        for (int i = 0; i < numbers.Length; i++) {
            int.TryParse(numbers[i].ToString(), out num);
            total += num; // will equal 30
        }
        Console.WriteLine(total);

        total = 0;
        string alphanumeric = "1@23451!23cf47c";
        for (int i = 0; i < alphanumeric.Length; i++) {
            int.TryParse(alphanumeric[i].ToString(), out num);
            total += num; // will equal 32, non-numeric characters are ignored
        }
        Console.WriteLine(total);

        Console.ReadLine();
    }

就像其他人发布的那样,有几种方法可以解决这个问题,最重要的是个人喜好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    相关资源
    最近更新 更多