2014-10-03 70 views
0

我正在使用Visual Studio 2013的VB.NET中工作。嘗試格式化從用戶選擇的文件中讀取的大字符串。我需要在每一行的末尾添加一個波浪號〜但是隻有當該行不是空白的時候。當前代碼:.NET正則表達式添加字符到非空行結束

Dim finalstrANSItext As New List(Of String) 
For Each strANSI As String In strArrANSItext 
    strANSI = Regex.Replace(strANSI, "$", "~") 
    finalstrANSItext.Add(strANSI) 
Next 

這會將〜添加到EVERY行的末尾,包括空行。

我嘗試這樣做:

Dim finalstrANSItext As New List(Of String) 
For Each strANSI As String In strArrANSItext 
    strANSI = Regex.Replace(strANSI, "(.)$", "~") 
    finalstrANSItext.Add(strANSI) 
Next 

這增加了〜只有非空行結束,因爲我想要的,但它也消除每一行的最後一個字符,這是我不希望。

正如你可能說的,正則表達式並不是我的特長。任何幫助將非常感激!

回答

0

在替換零件中,您需要引用捕獲的組索引(組索引1)。

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

OR

使用回顧後只有當它是由一個字符開頭相匹配的行尾。 Lookarounds是零寬度斷言,它不會消耗或匹配任何字符。

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

謝謝!兩者都完美運作。我會在9分鐘內讓我接受你的答案...... – 2014-10-03 13:54:27

+0

不客氣。 – 2014-10-03 13:55:56