我知道这应该很简单,但我有点卡住了。我正在逐行阅读文本文件。根据ICD,每条线路的格式相同。我需要在特定位置获取数据并将其替换为x。
例如:
Line = "First Name Last Name Street Address State ZIP Other Data"
这是一个固定长度的ICD,所以地址始终从位置100开始,然后经过150 我需要用x代替100到150的所有位置。
从那里开始我将这一行写成一个新文件,该部分工作正常。
非常感谢你的帮助。
答案 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