Hello,

I need a litle help here.

I am creating a program that finds a specific sentence in a word path and replaces it with a given value.

Specific sentence: l="600"

And it has to be changed to : l="300"

This is not to dificult and works fine:

Public Class Form1

Private Property sign As String

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim sign1 As String
    Dim sign2 As String


    sign1 = ("""600""")
    'sign1 = ("""")
    sign2 = ("""300""")

    Dim source As String = "C:\temp\bodem.mpr" 'path from original file
    Dim destination As String = "C:\temp\bodem2.mpr" 'path new file
    Dim oldText As String = "l=" & sign1 'old value
    Dim newText As String = "l=" & sign2 'new value

    My.Computer.FileSystem.WriteAllText(destination, My.Computer.FileSystem.ReadAllText(source).Replace(oldText, newText), False)
    Process.Start("C:\temp\bodem2.mpr") 'opens program in wordpath to control value
End Sub

End Class

The only problem is that the originnal sentence : l="600" does not always have the value 600, but instead always has a different vallue that i dont know. how can i write this down in my code.

Thanks in advance!

Recommended Answers

All 6 Replies

This is an example file. you just need to replace .txt by .mpr

I suggest you use regular expressions. I can give you an example but first I would have to know the range of values that you will be replacing. For example, will the value in quotes always be three digits? Does the string

l="600"

always appear on its own line or can it occur within a line as in

Some text l="600" some other text

hello,

The value can go from 1 to 6 digits

example:

0.02
1
5.55
500
500.61
1000.61

And it wil always appear in its own line.

I did have this kind of code already in vb excell, but in vb.net it doesnt work.

                readFile = FreeFile

readFile = FreeFile
      Open BestandsNaamInput For Input As #readFile

      writeFile = FreeFile
      Open BestandsNaamOutput For Output As #writeFile

      Do Until EOF(readFile)
        Line Input #readFile, AktTxt
        If InStr(AktTxt, BerijkGrensStart) <> 0 Then
          'Schrijf [001 in writeFile
          Print #writeFile, AktTxt
          Do Until AktTxt = ""
            Line Input #readFile, AktTxt
            If InStr(AktTxt, LengtePos) <> 0 Then
              Print #writeFile, LengtePos & Chr(34) & Replace(Lengte, ",", ".") & Chr(34)
            ElseIf InStr(AktTxt, BreedtePos) <> 0 Then
              Print #writeFile, BreedtePos & Chr(34) & Replace(Breedte, ",", ".") & Chr(34)
            ElseIf InStr(AktTxt, DiktePos) <> 0 Then
              Print #writeFile, DiktePos & Chr(34) & Replace(Dikte, ",", ".") & Chr(34)
            ElseIf InStr(AktTxt, OvermaatXPos) <> 0 Then
              Print #writeFile, OvermaatXPos & Chr(34) & Replace(OvermaatX, ",", ".") & Chr(34)
            ElseIf InStr(AktTxt, OvermaatYPos) <> 0 Then
              Print #writeFile, OvermaatYPos & Chr(34) & Replace(OvermaatY, ",", ".") & Chr(34)
            ElseIf InStr(AktTxt, variabele1Pos) <> 0 Then
              Print #writeFile, variabele1Pos & Chr(34) & Replace(variabele1, ",", ".") & Chr(34)
            ElseIf InStr(AktTxt, variabele2Pos) <> 0 Then
              Print #writeFile, variabele2Pos & Chr(34) & Replace(variabele2, ",", ".") & Chr(34)
            ElseIf InStr(AktTxt, variabele3Pos) <> 0 Then
              Print #writeFile, variabele3Pos & Chr(34) & Replace(variabele3, ",", ".") & Chr(34)
            ElseIf InStr(AktTxt, variabele4Pos) <> 0 Then
              Print #writeFile, variabele4Pos & Chr(34) & Replace(variabele4, ",", ".") & Chr(34)
            ElseIf InStr(AktTxt, variabele5Pos) <> 0 Then
              Print #writeFile, variabele5Pos & Chr(34) & Replace(variabele5, ",", ".") & Chr(34)
            ElseIf InStr(AktTxt, variabele6Pos) <> 0 Then
              Print #writeFile, variabele6Pos & Chr(34) & Replace(variabele6, ",", ".") & Chr(34)
            Else
              Print #writeFile, AktTxt
            End If
          Loop
        Else
          Print #writeFile, AktTxt
        End If
      Loop

      Close #readFile
      Close #writeFile
    End If
  Next
  MsgBox "Genereren bestanden compleet.", vbInformation

  Exit Sub

Something like the following should work:

        'path from original file
        Dim source As String = "C:\temp\regextest.txt"

        'path new file
        Dim destination As String = "C:\temp\regextest2.txt"

        Dim newText As String = "300" 'new value

        Dim inputText As String = My.Computer.FileSystem.ReadAllText(source)

        'split lines
        Dim inputTextArray As String() = inputText.Split(New String() {"\r\n", "\n", "\r", System.Environment.NewLine}, StringSplitOptions.None)

        'used named capturing groups
        Dim pattern As String = "(?<label>l)=([""])(?<tag>.*)([""])"

        'create a substitution pattern for replace method
        Dim replacePattern As String = "${label}=""" & newText & """"

        Dim outputText As String = String.Empty

        For Each lineData As String In inputTextArray
            Dim result As String = Regex.Replace(lineData, pattern, replacePattern, RegexOptions.IgnoreCase)

            outputText += result & System.Environment.NewLine
        Next

        My.Computer.FileSystem.WriteAllText(destination, outputText, False)


        'My.Computer.FileSystem.WriteAllText(destination, My.Computer.FileSystem.ReadAllText(source).Replace(oldText, newText), False)
        Process.Start(destination) 'opens program in wordpath to control value

Adapted from here.

Wow, this works fine.
Now i can finally look further to get my program running.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.