higsonboson
higsonboson

Reputation: 13

Finding the position of a character in a string

I need to add a code (123456) into a line of text in a file.

\\ESSEX [D]\\\\\\Tina Richardes\\\\\\\\\\\\\\\\\\\\\\\

The code needs to be entered after the 3rd "\" so it would look something like this.

\\ESSEX [D]\123456\\\\\Tina Richardes\\\\\\\\\\\\\\\\\\\\\\\

The text is always located on line 124 of the file.

Upvotes: 0

Views: 113

Answers (3)

Bugs
Bugs

Reputation: 4489

I would just loop through the string, counting the occurrences of the backslash and then exiting when you have found the third occurrence.

You would need to keep count of the index and then use this with the String.Insert method to insert the "123456" code:

Dim s As String = "\\ESSEX [D]\\\\\\Tina Richardes\\\\\\\\\\\\\\\\\\\\\\\"

Dim count As Integer = 0
Dim index As Integer = 0
For Each c In s
    If c = "\" Then count += 1
    index += 1
    If count = 3 Then Exit For
Next

s = s.Insert(index, "123456")

Output:

\\ESSEX [D]\123456\\\\\Tina Richardes\\\\\\\\\\\\\\\\\\\\\\\

Upvotes: 0

Tim Schmelter
Tim Schmelter

Reputation: 460108

You can use File.ReadAllLines and File.WriteAllLines and string methods:

Dim lines = File.ReadAllLines(path)
If lines.Length < 124 Then Return
Dim line = lines(123)
Dim tokens = line.Split(New String() {"\"}, StringSplitOptions.None)
If tokens.Length < 4 Then Return
tokens(3) = "123456"
lines(123) = String.Join("\", tokens)
File.WriteAllLines(path, lines)

Upvotes: 1

Mederic
Mederic

Reputation: 2019

If the [D] is always there a short and easy way would be to do:

Dim MyString As String = "\\ESSEX [D]\\\\\\Tina Richardes\\\\\\\\\\\\\\\\\\\\\\\"
MyString = MyString.Insert(MyString.IndexOf("[D]") + 3, "123456")

Otherwise you could do:

Dim MyString As String = "\\ESSEX [D]\\\\\\Tina Richardes\\\\\\\\\\\\\\\\\\\\\\\"
Dim d As Integer = 0
For Each i As Match In Regex.Matches(MyString, "\\")
    If d = 2 Then
        MsgBox(MyString.Insert(i.Index + 1, "132456"))
    End If
    d = d + 1
Next

Upvotes: 1

Related Questions