0

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

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

3 回答 3

3

您可以Regex.Replace改用:

replace = Regex.Replace(rep , string.format("({0})+", vbLf), "^")

它将替换与模式匹配的字符串的每个部分,这将是string.format("({0})+", vbLf)(例如,它将是(|)+当你的vbLfis时|)。该模式匹配每一次或多次出现的|.

于 2013-11-09T02:21:19.680 回答
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

注意测试字符串中的双 ^^。

于 2013-11-09T11:54:11.490 回答
0

将此添加到您的代码中

rbt.txt = rbt.txt.replace(vblf,"^") 
While rtb.Text.contains("^^")
    rtb.txt = rbt.txt.replace("^^","^")
end while
于 2013-11-09T16:27:18.567 回答