我知道这应该很简单,但我有点卡住了。我正在逐行阅读文本文件。根据 ICD,每一行的格式都相同。我需要在特定位置获取数据并用 x 替换它。
例如:
Line = "First Name Last Name Street Address State ZIP Other Data"
这是一个固定长度的 ICD,因此地址总是从位置 100 开始并经过 150 我需要用 x 替换位置 100 到 150 的所有内容。
从那里我将这条线写到一个新文件中,那部分工作正常。
非常感谢你的帮助。
我知道这应该很简单,但我有点卡住了。我正在逐行阅读文本文件。根据 ICD,每一行的格式都相同。我需要在特定位置获取数据并用 x 替换它。
例如:
Line = "First Name Last Name Street Address State ZIP Other Data"
这是一个固定长度的 ICD,因此地址总是从位置 100 开始并经过 150 我需要用 x 替换位置 100 到 150 的所有内容。
从那里我将这条线写到一个新文件中,那部分工作正常。
非常感谢你的帮助。
用这个:
Dim newLine As String = Line.Substring(0, 100) & New String("x"c, 50) & line.Substring(150)
没有内置方法可以做到这一点,因此您需要自己实现它。最简单的方法是使用该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()
您可以创建一个函数,该函数接受字符串、起始索引和长度,并返回带有替换字符的字符串。这也将处理长度大于字符串长度的错误情况(在这种情况下,字符串的其余部分将替换为您选择的字符)。
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