如何将字符串拆分为特定序列中的行
How to split string into a lines in a particular sequence
我有一个成员列表及其统计信息,我需要每 5 行用分隔符将其拆分。
直到 1000 多行
代码:
Dim newString As String = RichTextBox1.Text.Replace(vbCr, ";").Replace(vbLf, ";")
Dim separator As Char = CChar(";")
Dim sArr As String() = newString.Split(separator)
Dim indexOfSplit As Integer = 4
Dim sFinal As String = Join(sArr.Take(indexOfSplit).ToArray, separator) & vbNewLine &
Join(sArr.Skip(indexOfSplit).ToArray, separator)
RichTextBox2.Text = sFinal
输出:
期望输出:
我的代码的问题是它只完成了 1 行的工作,我需要它是字符串中的所有行
RichTextBox
有Lines
属性那returns行的数组。我使用 StringBuilder
为 RichTextBox2
构建字符串。 For
循环递增 4 而不是默认的 1。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ParseRTB()
End Sub
Private Sub ParseRTB()
Dim lines = RichTextBox1.Lines
Dim sb As New StringBuilder
For i = 0 To lines.Count - 4 Step 4
sb.AppendLine($"{lines(i)};{lines(i + 1)};{lines(i + 2)};{lines(i + 3)}")
Next
RichTextBox2.Text = sb.ToString
End Sub
可以用 LINQ 做到这一点:
RichTextBox1.Lines _
.Select(Function(s,i) New With { .L = i, .S = s }) _
.GroupBy(Function(a) a.L) _
.Select(Function(g) string.Join(";"c, g.Select(Function(a) a.S))
这会获取 rtb 的台词并将它们投射到一个新的序列中,该序列包含一个数字,该数字是台数除以 4(因此霍华德的台词为 0,罗马的台词为 1,等等),然后输入按该数字和分组(一组字符串)使用分号连接成一个字符串..
我有一个成员列表及其统计信息,我需要每 5 行用分隔符将其拆分。 直到 1000 多行
代码:
Dim newString As String = RichTextBox1.Text.Replace(vbCr, ";").Replace(vbLf, ";")
Dim separator As Char = CChar(";")
Dim sArr As String() = newString.Split(separator)
Dim indexOfSplit As Integer = 4
Dim sFinal As String = Join(sArr.Take(indexOfSplit).ToArray, separator) & vbNewLine &
Join(sArr.Skip(indexOfSplit).ToArray, separator)
RichTextBox2.Text = sFinal
输出:
期望输出:
我的代码的问题是它只完成了 1 行的工作,我需要它是字符串中的所有行
RichTextBox
有Lines
属性那returns行的数组。我使用 StringBuilder
为 RichTextBox2
构建字符串。 For
循环递增 4 而不是默认的 1。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ParseRTB()
End Sub
Private Sub ParseRTB()
Dim lines = RichTextBox1.Lines
Dim sb As New StringBuilder
For i = 0 To lines.Count - 4 Step 4
sb.AppendLine($"{lines(i)};{lines(i + 1)};{lines(i + 2)};{lines(i + 3)}")
Next
RichTextBox2.Text = sb.ToString
End Sub
可以用 LINQ 做到这一点:
RichTextBox1.Lines _
.Select(Function(s,i) New With { .L = i, .S = s }) _
.GroupBy(Function(a) a.L) _
.Select(Function(g) string.Join(";"c, g.Select(Function(a) a.S))
这会获取 rtb 的台词并将它们投射到一个新的序列中,该序列包含一个数字,该数字是台数除以 4(因此霍华德的台词为 0,罗马的台词为 1,等等),然后输入按该数字和分组(一组字符串)使用分号连接成一个字符串..