嘿,我正在尝试找出一种更好的方法将逗号分隔的字符串代码分成几个部分:
示例:
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 方式更短/更快?
您可以使用
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();