将逗号分隔的整数字符串转换为整数数组
我只找到了一种与之相反的方法:从一个int列表或数组创建一个用逗号分隔的字符串,但是没有关于如何将输入转换string str =
"1,2,3,4,5";为一个数组或int列表的方法。
这是我的实现(受Eric Lippert的这篇帖子启发):
public static IEnumerable<int> StringToIntList(string str) {
if (String.IsNullOrEmpty(str))
{
yield break;
}
var chunks = str.Split(',').AsEnumerable();
using (var rator = chunks.GetEnumerator())
{
while (rator.MoveNext())
{
int i = 0;
if (Int32.TryParse(rator.Current, out i))
{
yield return i;
}
else
{
continue;
}
}
}
}
您认为这是一个好方法还是有更简单的方法,甚至可以通过某种方式构建?
对不起任何混乱,但该方法需要处理等无效的输入"1,2,,,3"
或"###, 5,"
通过跳过它等等。
回答:
您应该使用一个foreach循环,如下所示:
public static IEnumerable<int> StringToIntList(string str) { if (String.IsNullOrEmpty(str))
yield break;
foreach(var s in str.Split(',')) {
int num;
if (int.TryParse(s, out num))
yield return num;
}
}
请注意,就像您的原始帖子一样,它将忽略无法解析的数字。
如果您想在无法解析数字的情况下引发异常,则可以使用LINQ轻松得多:
return (str ?? "").Split(',').Select<string, int>(int.Parse);
以上是 将逗号分隔的整数字符串转换为整数数组 的全部内容, 来源链接: utcz.com/qa/428978.html