将字符串转换为整型数组

3

我想知道如何将字符串中的数字转换为int[]

我有以下数字存储在一个字符串中:

1,2,3,4

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


5
将字符串以逗号为分隔符切割,并将切割后的子串转换为整数类型,最后存储到数组中。 - Anoop Joshi P
请阅读此帖子:https://dev59.com/MHNA5IYBdhLWcg3wS70m - d.danailov
5个回答

12

试一试:

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()方法。

1
我会始终在那里使用StringSplitOptions.RemoveEmptyEntries。但这并不是一个百分之百可靠的方法。 - Callum Linington
@CallumLinington 更新了答案。感谢您的建议。 - Nasreddine

7

使用 Linq:

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

使用方法组可能会更简单:

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

如果你对Linq不是很了解,还有另一种方法可以使用 Array.ConvertAll 方法将一个类型的数组(在调用 Split() 后得到的字符串数组)转换为另一个类型的数组(如你所需的int[]):

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

1
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();

虽然这种方法比较冗长,但它确保在将字符串分配给数组之前可以将其解析为整数。请注意,一旦无法解析字符串,它就会被取消,但如果遇到错误的数据类型,您可以随时添加else语句。

0

你可以使用以下代码:

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

0
Int32.Parse(stringname)

或者

Int32.TryParse(stringname,out outputvariable)

如果它们是逗号分隔的,那么首先使用 stringname.split(',') 将它们拆分成字符串数组,并使用 while 循环逐个解析它们。

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