将整型字符串拆分为IEnumerable
本文关键字:int IEnumerable 整型 字符串 拆分 | 更新日期: 2023-09-27 18:10:54
我需要将一个逗号分隔的整数字符串转换成一个整数列表。
最好的方法是什么?
我可以在下面这样做,但我担心性能-有没有更好更有效的方法来做到这一点?
public IEnumerable<int> GetListOfIds()
{
string Ids = "1,4,5,7,12"; // would be passed into method
List<int> _result = Ids.Split(',')
.ToList()
.Select(item => int.Parse(item))
.ToList();
return _result;
}
没有必要调用ToList
,但您的代码看起来很好:
public IEnumerable<int> GetListOfIds(string ids)
{
return ids.Split(',').Select(item => int.Parse(item));
}
您可能还想考虑添加错误处理,以防输入字符串无效:
public IEnumerable<int> GetListOfIds(string ids)
{
foreach (string part in ids.Split(','))
{
int x;
if (!int.TryParse(part, out x))
{
throw new ArgumentException(
string.Format("The value {0} cannot be parsed as an integer.", part),
"ids");
}
else
{
yield return x;
}
}
}
您至少可以省略第一个ToList()语句-因此它将是
List<int> _result = Ids.Split(',').Select(item => int.Parse(item)).ToList();
您可能可以对拆分结果进行循环并执行yield return int.Parse…但我不会期望有很大的差异,除非你在原始字符串中有很多项。
使用Stringify。库nuget包
-
示例1(默认分隔符隐式地作为逗号)
var ids = "1, 4, 5, 7, 12"; var splitComma = new StringConverter().ConvertTo<List<int>>(ids);
-
示例2(显式指定分隔符)
var ids = "1; 4; 5; 7; 12";
var splitColon = new StringConverter().ConvertTo<List<int>>(ids, new ConverterOptions { Delimiter = ';' });