【发布时间】:2016-05-31 07:29:01
【问题描述】:
我想知道如何将字符串值中的数字转换为int[]。
我将以下数字存储在一个字符串中:
1,2,3,4
但我想知道如何将这些数字存储在 int[] 中,以便将每个值存储到 int 数组中。
【问题讨论】:
-
str.Split(',').Select(int.Parse).ToArray();?
标签: c# arrays string numbers int
我想知道如何将字符串值中的数字转换为int[]。
我将以下数字存储在一个字符串中:
1,2,3,4
但我想知道如何将这些数字存储在 int[] 中,以便将每个值存储到 int 数组中。
【问题讨论】:
标签: c# arrays string numbers int
试试这个:
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();
上面的代码是做什么的:
Split() 之后创建一个字符串数组,所以在该方法调用之后,我们将得到如下内容:{ "1", "2", "3", "4"}
int.Parse(),这会将它们转换为 32 位有符号整数。ToArray() 将它们组成一个数组。【讨论】:
StringSplitOptions.RemoveEmptyEntries。但这无论如何都不是万无一失的方法
使用 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);
【讨论】:
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。
【讨论】:
你可以使用,
string str = "1,2,3,4";
var arr = str.Split(',').Select(int.Parse).ToArray()
【讨论】:
Int32.Parse(stringname)
或者
Int32.TryParse(stringname,out outputvariable)
如果是逗号分隔,则首先将它们拆分为stringname.split(','),这将返回字符串数组并使用while 循环单独解析它们。
【讨论】: