0

必要なデータを選択できるように、分解文字列を配列に分割する作業を行っています。しかし、これを見て..

If ProgressBar1.Value = 20 Then
            Dim rep As String = rtb.Text
            Dim replace As String
            replace = rep.Replace(vbLf, "^")
            rtb.Text = replace

送られてきた改行をすべて差し替えたい。それは正常に動作します。しかし、時々、モジュールは結果を "^^" に 2 行送ります。

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

これがコードの次の行です。ご覧のとおり、行分割ごとにデータを取得しているため、モジュールが double 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)(たとえば(|)+、あなたvbLfがの場合|)。そのパターンは、 が 1 回以上出現するたびに一致し|ます。

于 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 に答える