将字符串转换为int []

问题描述:

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

1,2,3,4 

但我不知道我怎么能拿这些数字存储在int[]所以每个值存储到int阵列。

+5

str.Split(',')。Select(int.Parse).ToArray();? –

+0

请阅读这篇文章:http://*.com/questions/1019793/how-can-i-convert-string-to-int –

使用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); 

试试这个:

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'在那里。但是,这不是一个傻瓜证明方法无论如何 –

+0

@CallumLinington更新了答案。感谢您的建议。 – Nasreddine

可以使用,

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循环。

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