Vb.net 查找每个出现的X并插入回车符
同事将一些数据放入平面文件(.txt),需要在每次出现“POL01”、“SUB01”、“VEH01”、“MCO01”之前插入回车符 我确实使用了:Vb.net 查找每个出现的X并插入回车符,vb.net,Vb.net,同事将一些数据放入平面文件(.txt),需要在每次出现“POL01”、“SUB01”、“VEH01”、“MCO01”之前插入回车符 我确实使用了: For Each line1 As String In System.IO.File.ReadAllLines(BodyFileLoc) If line1.Contains("POL01") Or line1.Contains("SUB01") Or line1.Contains("VEH01") Or line1.Conta
For Each line1 As String In System.IO.File.ReadAllLines(BodyFileLoc)
If line1.Contains("POL01") Or line1.Contains("SUB01") Or line1.Contains("VEH01") Or line1.Contains("MCO01") Then
Writer.WriteLine(Environment.NewLine & line1)
Else
Writer.WriteLine(line1)
End If
Next
但不幸的是,SSI并没有将文件格式化为“行”,而是将其作为一个完整的字符串
如何在每次发生上述情况之前插入回车
测试文本
POL01CALT302276F 332 NBPM 00101 20151113201511130001201611132359 2015111300010020151113000100SUB01CALT302276F 332 NBPMP01 Akl Abi-Khalil 19670131 M U33 Stoford Close SW19 6TJ 2015111300010020151113000100VEH01CALT302276F 332 NBPM001LV56 LEJ N 2006VAUXHALL CA 2015111300010020151113000100MCO01CALT302276F 332 NBPM0101 0 2015111300010020151113000100POL01CALT742569N
您可以为此使用正则表达式,特别是通过使用来查找要查找的字符串的每个匹配项,并将其替换为紧跟匹配文本的换行:
Dim str as String = "xxxPOL01xxxSUB01xxxVEH01xxxMCO01xxx"
Dim output as String = Regex.Replace(str, "((?:POL|SUB|VEH|MCO)01)", Environment.NewLine + "$1")
'output contains:
'xxx
'POL01xxx
'SUB01xxx
'VEH01xxx
'MCO01xxx
可能有更好的方法来构造此正则表达式,但这是对不同字母的简单替换,后面是01
。此匹配文本由替换字符串中的$1
表示
如果您不熟悉正则表达式,有许多工具可以帮助您理解它们-例如,将向您展示我在此处使用的工具的说明:
James如果SUB01 etc不在字符串的开头,请参阅上面我得到的一些测试文本。这不重要-它仍然会找到它们并将它们放在新的一行上。在我的测试代码中运行更新的示例?嗨,James,使用上面的代码,它只会突出显示我在regex101.com上第一次出现的POL01。您需要为我显示更多代码。啊-这是在regex101上,请注意,在我的原始链接上,我没有设置在该环境中成功测试所需的任何标志,您需要将
g
放在标志框中,使其成为全局搜索。使用.NET中的Regex.Replace
,您将不需要它。设置了全局标志。我也会更新答案中的链接。注意,我只是想让这个站点作为regex解释的补充,而不是让它实际进行替换。