我有一个这样的字符串(包括换行符)
A2,
10.22,
-57,
A,
10.23,
-68,
A2,
10.24,
-60,
LB,
10.25,
-62,
我试图让这个字符串看起来像这样:
A2,10.22,-57,
A,10.23,-68,
A2,10.24,-60,
LB,10.25,-62,
我需要在我尝试过的每 3 行中加入字符串:
int numLines = a.Split('\n').Length;
for (int i = 0; i < numLines; i += 3)
{
richTextBox1.Text = a.Replace("\n", "");
}
但它对我不起作用。请帮帮我
最佳答案
您也可以使用 LINQ 解决此问题,方法是使用 index overload of .Select
保留行号的运行计数,然后将它们分成 3 组 - 我使用整数除法来 Floor
行索引,一次 3 个,但可能还有其他合适的方法。
var groups = values.Select((s, idx) => (Index: idx / 3, Value: s))
.GroupBy(x => x.Index);
上面组中的每一项都是IEnumerable<(Index, Value)>
.
您还需要警惕 newlines - 这些可能是 \r\n
在 Windows 中,不仅仅是 \n
你已经指出了。
这是一个例子:
var a =
@"A2,
10.22,
-57,
A,
10.23,
-68,
A2,
10.24,
-60,
LB,
10.25,
-62,";
var values = a.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None);
var groups = values.Select((s, idx) => (Index: idx / 3, Value: s))
.GroupBy(x => x.Index);
foreach (var grp in groups)
{
Console.WriteLine(string.Join("", grp.Select(x => x.Value)));
}
由于每个字符串(包括最后一个)的末尾已经有逗号,因此无需添加另一个分隔符。
输出:
A2,10.22,-57,
A,10.23,-68,
A2,10.24,-60,
LB,10.25,-62,
关于C# 一次将字符串行合并为 3 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50448872/