我想知道如何将字符串中的数字转换为int[]
。
我有以下数字存储在一个字符串中:
1,2,3,4
但我想知道如何将这些数字存储在 int[]
中,使得每个值都被存储到 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
。但这并不是一个百分之百可靠的方法。 - Callum Linington使用 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);
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();
你可以使用以下代码:
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
循环逐个解析它们。