将逗号分隔的整数字符串转换为整数数组

我只找到了一种与之相反的方法:从一个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

回到顶部