0

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

例如:

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

这是一个固定长度的 ICD,因此地址总是从位置 100 开始并经过 150 我需要用 x 替换位置 100 到 150 的所有内容。

从那里我将这条线写到一个新文件中,那部分工作正常。

非常感谢你的帮助。

4

3 回答 3

2

用这个:

Dim newLine As String = Line.Substring(0, 100) & New String("x"c, 50) & line.Substring(150)
于 2013-07-31T20:34:23.060 回答
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()
于 2013-07-31T20:35:43.900 回答
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
于 2013-07-31T20:36:57.647 回答