我有一个函数(tointarray)将一个字符串转换为一个int数组,但我对它不是很满意.它完成了这项工作,但必须有一种更优雅的方式来做到这一点,也许LINQ可以在这里提供帮助.不幸的是我在LINQ方面不是很好.有没有更好的办法?
我的功能:
{
string s1 = "1;2;3;4;5;6;7;8;9;10;11;12";
int[] ia = tointarray(s1, ';');
}
int[] tointarray(string value, char sep)
{
string[] sa = value.Split(sep);
int[] ia = new int[sa.Length];
for (int i = 0; i < ia.Length; ++i)
{
int j;
string s = sa[i];
if (int.TryParse(s, out j))
{
ia[i] = j;
}
}
return ia;
}
Run Code Online (Sandbox Code Playgroud)
JSp*_*ang 200
这篇文章提出了类似的问题,并使用LINQ解决它,也许它也会帮助你.
string s1 = "1;2;3;4;5;6;7;8;9;10;11;12";
int[] ia = s1.Split(';').Select(n => Convert.ToInt32(n)).ToArray();
Run Code Online (Sandbox Code Playgroud)
Bug*_*tor 32
您可以使用方法组来缩短JSprangs解决方案:
string s1 = "1;2;3;4;5;6;7;8;9;10;11;12";
int[] ints = s1.Split(';').Select(int.Parse).ToArray();
Run Code Online (Sandbox Code Playgroud)
Jus*_*ner 17
s1.Split(';').Select(s => Convert.ToInt32(s)).ToArray();
Run Code Online (Sandbox Code Playgroud)
未经测试,脱离我的头脑......现在测试正确的语法.
经过测试,一切看起来都不错.
Jak*_*urc 17
实际上正确的一对一实现是:
int n;
int[] ia = s1.Split(';').Select(s => int.TryParse(s, out n) ? n : 0).ToArray();
Run Code Online (Sandbox Code Playgroud)
这是过滤掉无效字段的代码:
var ints = from field in s1.Split(';').Where((x) => { int dummy; return Int32.TryParse(x, out dummy); })
select Int32.Parse(field);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
119691 次 |
| 最近记录: |