2013-11-09 2 views
0

Я работаю над разбиением строк в массивах, чтобы я мог выбирать нужные мне данные. Однако посмотрите на это ..Как заменить два символа одним символом в string.split vb.net

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 

здесь следующая строка кода, как вы можете видеть, я получаю данные линии раскола, поэтому, если модуль послал me double vbLf, он дает «^^», что означает, что индекс внутри ^^ подсчитывается, и поэтому мои массивы перетасовываются.
так, как я могу заменить одиночный vbLf на^
и двойной vbLf на ^?
скажем, что-то вроде этого ..

string = mystring.Replace(one vbLf & two vbLf, "^") 

ответ

3

Вы можете использовать Regex.Replace вместо:

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

Он заменит каждую часть строки, которая соответствует скороговоркой, который будет string.format("({0})+", vbLf) (например, это будет (|)+, когда ваш vbLf - |). Этот шаблон соответствует каждому одному или нескольким вхождениям |.

+0

спасибо! это сработало! но можете ли вы объяснить мне, как это работает? – AdorableVB

+0

Вы должны прочитать о регулярных выражениях. Я обновил свой ответ с небольшим пояснением, но вы определенно должны прочитать больше по этому вопросу. – MarcinJuraszek

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 

Замечание double ^^ в тестовой строке.

0

Добавьте это в ваш код

rbt.txt = rbt.txt.replace(vblf,"^") 
While rtb.Text.contains("^^") 
    rtb.txt = rbt.txt.replace("^^","^") 
end while 
Смежные вопросы