我正在使用Visual Studio 2013在VB.NET中工作。尝试格式化从用户选择的文件中读取的大字符串。我需要在每行的末尾添加一个波浪号〜但只有当该行不为空时。目前的代码:
Dim finalstrANSItext As New List(Of String)
For Each strANSI As String In strArrANSItext
strANSI = Regex.Replace(strANSI, "$", "~")
finalstrANSItext.Add(strANSI)
Next
这会将〜添加到每一行的末尾,包括空行。
我试过了:
Dim finalstrANSItext As New List(Of String)
For Each strANSI As String In strArrANSItext
strANSI = Regex.Replace(strANSI, "(.)$", "~")
finalstrANSItext.Add(strANSI)
Next
这会将〜仅添加到非空白行的末尾,如我所愿,但它也会删除每行的最后一个字符,这是我不想要的。
正如你可以说的那样,正则表达不是我的强项。任何帮助将不胜感激!
答案 0 :(得分:0)
在替换部分中,您需要引用捕获的组索引(组索引1)。
strANSI = Regex.Replace(strANSI, "(.)$", "$1~")
或强>
只有在前面有一个字符时才使用lookbehind来匹配行尾。 Lookarounds是零宽度断言,它不会消耗或匹配任何字符。
strANSI = Regex.Replace(strANSI, "(?<=.)$", "~")