【问题标题】:Converting string to int[]将字符串转换为 int[]
【发布时间】:2016-05-31 07:29:01
【问题描述】:

我想知道如何将字符串值中的数字转换为int[]。 我将以下数字存储在一个字符串中:

1,2,3,4

但我想知道如何将这些数字存储在 int[] 中,以便将每个值存储到 int 数组中。

【问题讨论】:

标签: c# arrays string numbers int


【解决方案1】:

试试这个:

string str = "1,2,3,4";
int[] array = str.Split(',').Select(x => int.Parse(x)).ToArray();

如果您可能有一个带有双逗号的字符串(例如:1,,2,3,4),那么根据@Callum Linington 的评论,这会更好:

int[] array = str.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries)
                 .Select(int.Parse)
                 .ToArray();

上面的代码是做什么的:

  1. 在调用Split() 之后创建一个字符串数组,所以在该方法调用之后,我们将得到如下内容:{ "1", "2", "3", "4"}
  2. 然后我们将这些字符串中的每一个传递给int.Parse(),这会将它们转换为 32 位有符号整数。
  3. 我们取出所有这些整数并用ToArray() 将它们组成一个数组。

【讨论】:

  • 我会一直坚持在那里StringSplitOptions.RemoveEmptyEntries。但这无论如何都不是万无一失的方法
  • @CallumLinington 更新了答案。感谢您的建议。
【解决方案2】:

使用 Linq:

string str = "1,2,3,4";
var result = str.Split(',').Select(c => Convert.ToInt32(c)).ToArray();

使用method group 可以更简单:

var result = str.Split(',').Select(int.Parse).ToArray();

此外,如果您对 Linq 不了解更多信息,Array.ConvertAll 方法还有另一种方法,它将一种类型的数组(调用后的字符串数组Split())转换为另一种类型的数组(int[] 你想要的):

var result = Array.ConvertAll(str.Split(','), int.Parse);

【讨论】:

    【解决方案3】:
    bool isInt = true;
    string[] str = "1,2,3,4".Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries);
    int counter = 0;
    List<int> parsedInts = new List<int>(str.Length);
    
    while(isInt && counter < str.Length)
    {
        int parsedInt;
        isInt = int.TryParse(str[counter], out parsedInt);
        counter++;
        if (isInt) {
            parsedInts.Add(parsedInt);
        }
    }
    
    // then you can return the list as an array if you want
    parsedInts.ToArray();
    

    虽然此方法更长且更冗长,但它实际上确保您可以在将字符串分配给数组之前将其解析为 int。

    请务必注意,一旦无法解析字符串,它将立即取消,但如果您遇到错误的数据类型,我们非常欢迎您输入else

    【讨论】:

      【解决方案4】:

      你可以使用,

      string str = "1,2,3,4";
      var arr = str.Split(',').Select(int.Parse).ToArray()
      

      【讨论】:

        【解决方案5】:
        Int32.Parse(stringname)
        

        或者

        Int32.TryParse(stringname,out outputvariable)
        

        如果是逗号分隔,则首先将它们拆分为stringname.split(','),这将返回字符串数组并使用while 循环单独解析它们。

        【讨论】:

          猜你喜欢
          • 2011-10-02
          • 2011-03-06
          • 1970-01-01
          • 2018-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多