如何添加两个数字字符串?

How to add two strings that are numbers?

我正在遍历一些节点并获取电荷并将它们加在一起。不过费用是字符串类型。

第一次循环字符串 charge = "309",

第二次循环 string charge = "38";

 `Looping through list of nodes
 {
   saBillDetail.TotalServiceUsage += totalSvcNode.InnerText;
 }
`

我原以为我可以将它们加在一起,但它们是这样连接的:

`charge + charge = '30938'`

如何强制将这些字符串视为数字?并在循环结束时得到这样的输出

`charge + charge = '347'`

您需要解析字符串中的数字:

string number1 = "309";
string number2 = "38";

int result = int.Parse(number1) + int.Parse(number2);

然后您可以将文本设置为等于该字符串表示形式:

string addResult = result.ToString();

注意:如果格式不正确,Int32.Parse()将抛出异常。考虑使用 Int32.TryParse() 作为 bool 方法来捕获不可能的解析。

您需要将字符串转换为整数,将它们相加并将结果转换回字符串:

int sum = 0;
foreach (string strNumber in strNumberCollection)
{
    int number;
    if (int.TryParse(strNumber, out number))
        sum += number;
}

string total = sum.ToString();

正如人们已经回答的那样,这可能是另一种解决方案 所以你不会得到错误

    private static int AddTwoStrings(string one, string two) 
    {
        int iOne = 0;
        int iTwo = 0;
        Int32.TryParse(one, out iOne);
        Int32.TryParse(two, out iTwo);
        return iOne + iTwo;
    }

或者如果你想要一个字符串结果。

private static String AddTwoStrings(string one, string two) 
{
    int iOne = 0;
    int iTwo = 0;
    Int32.TryParse(one, out iOne);
    Int32.TryParse(two, out iTwo);
    return (iOne + iTwo).ToString();
}

编辑:

正如 Alexei Levenkov 所说,您 could/should 处理异常。 也许这样的事情会在开发过程中帮助你

    private static int AddTwoStrings(string one, string two) 
    {
        int iOne = 0;
        int iTwo = 0;
        bool successParseOne = Int32.TryParse(one, out iOne);
        bool successParseTwo = Int32.TryParse(two, out iTwo);
        if (!successParseOne) 
        {
            throw new ArgumentException("one");
        }
        else if(!successParseTwo)
        {
            throw new ArgumentException("two");
        }

        return (iOne + iTwo);
    }

因此,当您输入错误号码时,如果您使用 try/catch

,您将收到通知