VB.Net Parse /替换一行中的子字符串

时间:2013-07-31 20:19:06

标签: vb.net

我知道这应该很简单,但我有点卡住了。我正在逐行阅读文本文件。根据ICD,每条线路的格式相同。我需要在特定位置获取数据并将其替换为x。

例如:

Line = "First Name Last Name Street Address State ZIP Other Data"

这是一个固定长度的ICD,所以地址始终从位置100开始,然后经过150 我需要用x代替100到150的所有位置。

从那里开始我将这一行写成一个新文件,该部分工作正常。

非常感谢你的帮助。

3 个答案:

答案 0 :(得分:2)

使用此:

Dim newLine As String = Line.Substring(0, 100) & New String("x"c, 50) & line.Substring(150)

答案 1 :(得分:0)

没有内置方法可以做到这一点,所以你需要自己实现它。最简单的方法是使用String.Substring方法提取所需的部分(字符串的开头和结尾),然后将它们与替换值连接在一起。例如:

Dim newValue As String = line.Substring(0, 99) & New String("X"c, 50) & line.Substring(150)

但是,如果您需要替换字符串的多个部分,使用StringBuilder可能更容易,更有效,这允许您操作每个字符:

Dim builder As New StringBuilder(line)
For i As Integer = 100 to 149
    builder.Chars(i) = "X"c
Next
line = builder.ToString()

答案 2 :(得分:0)

您可以创建一个接受字符串,起始索引和长度的函数,并返回包含替换字符的字符串。这也将处理长度大于字符串长度的错误情况(在这种情况下,字符串的其余部分将替换为您选择的字符)。

Private Shared Function ReplaceCharsWithChar(input As String, firstIndex As Integer, length As Integer, replaceChar As Char) As String
    Dim sb As New StringBuilder(input)
    For i As Integer = firstIndex To Math.Min(firstIndex + length, input.Length) - 1
        sb(i) = replaceChar
    Next
    Return sb.ToString()
End Function

并像这样称呼它

Dim input As String = "First Name Last Name Street Address State ZIP Other Data" 
Dim result As String = ReplaceCharsWithChar(input, 10, 5, "x"C)

'output would be First Namexxxxx Name Street Address State ZIP Other Data