2016-03-05 3 views
1

je dans une ligne de fichier texte de ce format:VB.NET - Il se tient au courant de remplacer

word1|word2|word3 
anotherword1|anotherword2 

Je suis en train de diviser chaque mot un par un par chaque ligne de ce fichier et une fois le programme détecte Si la zone richtext a un de ces mots, ce dernier sera remplacé par la ligne non fractionnée. Exemple: De word1 à mot1 | mot2 | mot3

Voici ce que j'ai jusqu'à présent:

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click 
    For Each line As String In File.ReadLines("C:\text.txt") 
     Dim input As String = line 
     Dim result As String() = line.Split(New String() {"|"}, StringSplitOptions.None) 
     For Each s As String In result 
      Try 
       Dim linex As String = line 
       RichTextBox1.Text = RichTextBox1.Text.Replace(s, " " & linex) 
      Catch exxx As Exception 
      End Try 
     Next 
    Next 
End Sub 

Il fonctionne très bien, mais après le remplacement, le texte remplacé ont encore le mot détecté et garder le remplacement lui-même avec word1 | word2 | word3 pour toujours. Et je veux faire le processus juste une fois.

Comme ceci: Click to see

Répondre

2

En raison du format des mots sont stockés dans, il sera beaucoup plus facile d'obtenir ce que vous voulez en utilisant les expressions régulières:

Dim lines = File.ReadLines("C:\text.txt") 
For Each line As String In lines 
    Dim pat = String.Format("\b({0})\b", line) 
    RichTextBox1.Text = Regex.Replace(RichTextBox1.Text, pat, line) 
Next 

Cela devrait faire à peu près ce que vous vouloir.

Cochez la case here.

+0

Merci beaucoup. Ça marche! – Netero