如何在string.split vb.net中用一个char替换两个chars

时间:2013-11-09 02:18:52

标签: regex vb.net string

我正在努力将爆炸字符串拆分为数组,以便我可以选择我想要的数据。不过,看看这个......

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, "^")

3 个答案:

答案 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