我正在努力将爆炸字符串拆分为数组,以便我可以选择我想要的数据。不过,看看这个......
If ProgressBar1.Value = 20 Then
Dim rep As String = rtb.Text
Dim replace As String
replace = rep.Replace(vbLf, "^")
rtb.Text = replace
我想替换发送给我的所有换行符。它工作正常。但有时模块给我两行换行结果为“^^”
If ProgressBar1.Value = 30 Then
Dim rtbnew As String = rtb.Text
incomingip = rtbnew.Split("^")
ip = incomingip(6).Split("="c)
txtIP.Text = ip(1)
ip = incomingip(7).Split("="c)
txtMask.Text = ip(1)
ip = incomingip(9).Split("="c)
txtHost.Text = ip(1)
ip = incomingip(8).Split("="c)
txtDfg.Text = ip(1)
ip = incomingip(14).Split("="c)
txtBackupIP.Text = ip(1)
ip = incomingip(5).Split("="c)
cboDhcp.Text = ip(1)
End If
这是下一行代码,正如你所看到的,我每行都得到数据拆分,所以,如果模块发送给我双vbLf,它给出“^^”,这意味着,^^中的索引正在算了,因此,我的阵列被洗牌了。
那么,如何将单个vbLf替换为^
和双vbLf到^?
让我们说,像这样......
string = mystring.Replace(one vbLf & two vbLf, "^")
答案 0 :(得分:3)
您可以改为使用Regex.Replace
:
replace = Regex.Replace(rep , string.format("({0})+", vbLf), "^")
它将替换匹配模式的字符串的每个部分,这将是string.format("({0})+", vbLf)
(例如,当(|)+
为vbLf
时,它将为|
。该模式匹配|
的每一次或多次出现。
答案 1 :(得分:0)
Split方法有一个重载,它会为你提供一个删除空的选项(StringSplitOptions.RemoveEmptyEntries)。这是一个简短的例子
Dim teststring As String = "This^is^a^^test"
Dim parts() As String = teststring.Split(New Char() {"^"c}, StringSplitOptions.RemoveEmptyEntries)
For Each s As String In parts
Debug.WriteLine(s)
Next
注意测试字符串中的双^^。
答案 2 :(得分:0)
将此添加到您的代码中
rbt.txt = rbt.txt.replace(vblf,"^")
While rtb.Text.contains("^^")
rtb.txt = rbt.txt.replace("^^","^")
end while