分割逗号字符串数组每第 10 个逗号

问题描述 投票:0回答:1

嘿,我正在尝试找出一种更好的方法将逗号分隔的字符串代码分成几个部分:

示例:

31,139,8,0,0,0,0,0,4,0,164,188,233,139,121,45,100,253,235,255,225,212,147,233,105,231,15

这是我用来进行格式化的代码:

List<string> valueList = "31,139,8,0,0,0,0,0,4,0,164,188,233,146,163,74,178,46,2,250,123,159,167,168,187,174,109,".Split(',').ToList();
List<string> groupedBy10 = new List<string>();

while (valueList.Any()) {
    groupedBy10.Add(string.Join(",", valueList.Take(10)) + ",");
    valueList = valueList.Skip(10).ToList();
}

groupedBy10[groupedBy10.Count - 1] = groupedBy10[groupedBy10.Count - 1].TrimEnd(',');
string newOutput = string.Join(Environment.NewLine, groupedBy10.ToArray());

这是新的输出:

31,139,8,0,0,0,0,0,4,0,
164,188,233,139,121,45,100,253,235,255,
225,212,147,233,105,231,15

有更好的方法吗?也许正则表达式或 Linq 方式更短/更快?

c# arrays arraylist split group
1个回答
0
投票

您可以使用

GroupBy
进行整数除法:

List<List<string>> groupedBy10 = valueList.Select((s, ix) => (String:s,Index:ix))
    .GroupBy(x => x.Index / 10)
    .Select(g => g.Select(x => x.String).ToList())
    .ToList();
    
IEnumerable<string> flattenedList = groupedBy10.Select(list=> string.Join(",", list));
string newOutput = string.Join(Environment.NewLine, flattenedList);

旁注:要删除最后一个字符串末尾的逗号,为什么不使用这个

String.Split
重载?

List<string> valueList = "31,139,8,0,0,0,0,0,4,0,164,188,233,146,163,74,178,46,2,250,123,159,167,168,187,174,109,"
    .Split(new[]{','}, StringSplitOptions.RemoveEmptyEntries)
    .ToList();
© www.soinside.com 2019 - 2024. All rights reserved.