我有一个文本框,如下所示:
Line 1
Line 2
Line 3
**Line 4**
Line 1
Line 2
Line 3
**Line 4**
(repeats...)
如何使用VB循环文本框,删除第1,2和3行,跳过第四行,然后重复?或者更确切地说,将每四行记录到一个新的文本区域中?
谢谢!我迷路了!
答案 0 :(得分:3)
我可能会获取内容,在换行符上拆分以创建一个字符串数组(每行一个字符串),然后遍历数组,只输出我想要的数组。
答案 1 :(得分:1)
如果是 VB6,那么请记住,变量长度String类型是一种引用类型,这意味着操作将涉及深度复制,即连接是昂贵的。
Dim lines() As String
lines = VBA.Split(TextBox1.Text, vbCrLf)
Dim counter As Long
For counter = 3 To UBound(lines) Step 4
lines(counter) = Chr$(22)
Next
TextBox1.Text = _
Replace$( _
Replace$( _
VBA.Join(lines, vbCrLf), _
vbCrLf & Chr$(22), vbNullString), _
Chr$(22) & vbCrLf, vbNullString, 1)
答案 2 :(得分:0)
这是上一个答案的代码。
Private Function EveryFourthLine(ByVal input As String) As String
Dim newtxt As String = ""
Dim oldtxt As String() = input.Split(vbCrLf)
For i As Integer = 1 To oldtxt.Count
If i Mod 4 = 0 Then
newtxt = newtxt & oldtxt(i - 1)
If i <> oldtxt.Count Then
'add a vbcrlf to all but the last line
newtxt = newtxt & vbCrLf
End If
End If
Next
Return newtxt
End Function
答案 3 :(得分:0)
如果这是VB.Net并且你使用的是文本框 - 你不需要自己拆分。您只需访问.Lines属性即可。你会得到一个字符串数组
你当然可以像其他人一样展示行;但另一种方法是使用LINQ为你做这项工作。
txtBox1.Lines = (From curLine In txtBox1.Lines _
Where Array.IndexOf(txtBox1.Lines, curLine) Mod 4 = 3).ToArray
你在这里说的是你希望文本框中的行等于文本框中已有的所有行 - 只要该特定行的索引除以4的余数为3。
当你输入它时听起来很复杂,但实际上,它所要做的就是给你第四行,并将其重新设置到文本框中。