.NET Regex将字符添加到非空行的末尾

时间:2014-10-03 13:47:55

标签: regex vb.net

我正在使用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

这会将〜仅添加到非空白行的末尾,如我所愿,但它也会删除每行的最后一个字符,这是我不想要的。

正如你可以说的那样,正则表达不是我的强项。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

在替换部分中,您需要引用捕获的组索引(组索引1)。

strANSI = Regex.Replace(strANSI, "(.)$", "$1~")

只有在前面有一个字符时才使用lookbehind来匹配行尾。 Lookarounds是零宽度断言,它不会消耗或匹配任何字符。

strANSI = Regex.Replace(strANSI, "(?<=.)$", "~")