输入:
string param = "1100,1110,0110,0001";
输出:
int[] matrix = new[]
{
1,1,0,0,
1,1,1,0,
0,1,1,0,
0,0,0,1
};
我做了什么?
首先,我将字符串拆分为字符串[]。
string[] resultantArray = param.Split(',');
创建了一个方法,我传递了我的字符串[]。
var intArray = toIntArray(resultantArray);
static private int[] toIntArray(string[] strArray)
{
int[] intArray = new int[strArray.Length];
for (int i = 0; i < strArray.Length; i++)
{
intArray[i] = int.Parse(strArray[i]);
}
return intArray;
}
问题吗
我尝试了很多SO的解决方案,但没有一个能帮助我。
使用不带前导零的数组结束。
答案 0 :(得分:19)
.Where(char.IsDigit)
char
- 数字转换为integer
:.Select(x => x-'0')
(这不如int.Parse
或Convert.ToInt32
那么漂亮,但它超级快)代码:
string param = "1100,1110,0110,0001";
int[] result = param.Where(char.IsDigit).Select(x => x-'0').ToArray();
正如CodesInChaos评论的那样,如果您的输入中有other种类型的数字,则可能会导致错误,例如泰国数字字符:&#39; 0&#39; &#39; 1&#39; &#39; 2&#39; &#39; 3&#39; &#39; 4&#39; &#39; 5&#39; &#39; 6&#39; &#39; 7&#39; &#39; 8&#39; &#39; 9&#39;其中char.IsDigit == true
- 如果您需要处理此类特殊情况,您只能在结果0
1
和.Where("01".Contains)
答案 1 :(得分:5)
你也可以使用Linq删除逗号并按字符顺序转换结果。
string param = "1100,1110,0110,0001";
int[] result = param.Replace(",", "").Select(c => (int)Char.GetNumericValue(c)).ToArray();
答案 2 :(得分:3)
另一种方法
static private IEnumerable<int> toIntArray(string[] strArray)
{
foreach (string str in strArray)
{
foreach (char c in str)
{
yield return (int)char.GetNumericValue(c);
}
}
}
答案 3 :(得分:2)
这个怎么样?
string input = "1100,1110,0110,0001";
var result = input
.Split(',')
.Select(e => e.ToCharArray()
.Select(f => int.Parse(f.ToString())).ToArray())
.ToArray();
答案 4 :(得分:1)
string[] s=param.split(',');
Char[] c;
foreach(string i in s){
c+=i.ToCharArray()
}
int[] myintarray;
int j=0;
foreach(char i in c){
myintarray[j]=(int)i;
j++
}