c# - C#一次将字符串行合并为3组
问题描述
我有一个这样的字符串(包括换行符)
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 来解决此问题,通过使用索引重载.Select
来保留行号的运行计数,然后将它们分组为 3 个组 - 我Floor
对行索引使用整数除法,一次 3 个,但可能还有其他合适的方式。
var groups = values.Select((s, idx) => (Index: idx / 3, Value: s))
.GroupBy(x => x.Index);
上述组中的每个项目将在哪里IEnumerable<(Index, Value)>
。
您还需要警惕换行符- 这些可能\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,
推荐阅读
- vuejs2 - 基于布尔值禁用 nuxt 链接
- c# - FromSql 导致错误,而查询在 pgAdmin 中工作
- php - Wordpress - 如何在每一页上显示标题?
- php - 国家、州和城市名称显示第一个表中的正确名称,但也显示第二个表的相同详细信息
- python - :“字段列表”中的未知列
- reactjs - 状态属性在反应 + ts 中的 onChange 上不可用?
- ios - UICollectionView 显示在模拟器上,但不显示在实际设备上
- javascript - 如何在 RowDataPacket 中循环数据
- python - Python:两个整数不相等
- python - 在 CentOS 服务器上运行时,Python 脚本在 smptlib.SMTP(server) 处冻结