【问题标题】:How do I convert a string to a number so I can add another number to it in C#?如何将字符串转换为数字,以便在 C# 中添加另一个数字?
【发布时间】:2013-11-25 15:01:14
【问题描述】:

如果我有一个值类似于"20" 的字符串,如何将其转换为整数以便将其添加到另一个数字?

这里有一些代码可以解释我想要的样子:

string myString = "20";
myString = myString + 2;

现在字符串myString 应该是"22"

【问题讨论】:

    标签: c# string int


    【解决方案1】:

    您需要将字符串转换为int,然后进行添加。稍后您可以将生成的int 转换为字符串。

    为了将字符串转换为整数,您可以使用Convert.ToInt32int.Parse 或更安全的选项int.TryParse,在无效字符串的情况下不会引发异常。

    int number1;
    int number2 = 2;
    
    if(!int.TryParse(myString, out number1)
    {
      //invalid string
    }
    string result = (number1 + number2).ToString();
    

    【讨论】:

      【解决方案2】:
      string myString = "20";
      myString = Convert.ToString(Convert.ToInt32(myString) + 2);
      

      【讨论】:

      • 很高兴我能帮上忙。正如您从其他 cmets/answers 中看到的那样,这可以通过多种方式完成,但主要是在进行算术加法之前,您需要确保两个值都是整数(或其他数字数据类型)。如果不这样做,您将使用加号运算符获得字符串连接。
      【解决方案3】:

      你需要解析字符串来做算术:

      string myString = "20";
      myString = (int.Parse(myString) + 2).ToString();
      

      【讨论】:

        【解决方案4】:

        这是可以做到的

        string myString = "20";
        int val = Convert.ToInt32(myString);
        myString = (val + 2).ToString;
        

        【讨论】:

          【解决方案5】:

          不确定您的实际需求,但对于示例代码,您可能会更好:

          int myInt = 20;
          
          myInt = myInt + 2;
          
          //To do something:
          something.Text = myInt.ToString();
          

          【讨论】:

            【解决方案6】:

            另一种有趣的方法是:

               using System.Data;
            
               //...
            
               string myString = "20";
               string addition = "+ 2";
            
               DataTable dt = new DataTable();
            
               myString = dt.Compute(myString + addition, string.Empty).ToString();
            

            还有更有趣的:

            using System;
            using System.CodeDom.Compiler;
            
            //...
            
            string myString = "20";
            
            CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");
            ICodeCompiler icc = codeProvider.CreateCompiler();
            System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
            parameters.GenerateExecutable = false;
            parameters.GenerateInMemory = true;
            CompilerResults results = icc.CompileAssemblyFromSource(
                parameters,
                string.Format(@"
            namespace N{{
            public static class C{{
            public static string M(){{
            return ({0} + {1}).ToString();
            }}}}}}",
                    myString,
                    "2"));
            
            myString = results
                .CompiledAssembly
                .GetType("N.C")
                .GetMethod("M")
                .Invoke(null, null)
                .ToString();
            

            当然,这都不推荐,除非没有其他办法。只是出于好奇而发布:-)

            【讨论】:

              【解决方案7】:
              string myString = "20";
              int num = Convert.ToInt32(myString) + 2;
              myString = num.toString();
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-05-11
                • 1970-01-01
                • 2021-03-17
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多