我得到了以下格式的StringBuilder结果:
[Cat1] Item1
[Cat2] Item2
[Cat1] Item12
[Cat1] Item89
[Cat3] Item88
使用StringBuilder的AppendLine方法创建了行。 我希望在显示之前对结果进行排序,以便得到结果:
[Cat1] Item1
[Cat1] Item12
[Cat1] Item89
[Cat2] Item2
[Cat3] Item88
最好的方法是什么?
答案 0 :(得分:4)
如果您不关心性能,可以执行以下操作:
StringBuilder sb = new StringBuilder();
sb.AppendLine("3333");
sb.AppendLine("2222");
sb.AppendLine("1111");
List<string> items = new List<string>(sb.ToString().Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries));
items.Sort();
sb = new StringBuilder(string.Join("\r\n", items.ToArray()));
答案 1 :(得分:3)
StringBuilder
基本是待处理字符数据的包装器(可变隐藏string
或char[]
,具体取决于实现)。因此,您无法在内部对其进行排序 - 或者至少不是很容易。你最好的选择是:
List<string>
或其他一些集合首先,然后排序并合并string.Split()
,对数组进行排序,然后重新组合第一种可能更有效率。更好的方法是找到对源数据进行排序的方法,以便在开始构建字符串之前对其进行排序。