爲什麼line2
只替換交替出現的一半?String.Replace不會替換所有匹配項
Dim line1 As String = "AAA|BBB|CCC|CCC|CCC|CCC|EEE|FFF"
Dim line2 As String = "AAA|BBB|CCC|CCC|CCC|CCC|EEE|FFF"
Dim line3 As String = "AAA|BBB|CCC|CCC|CCC|CCC|EEE|FFF"
line1 = line1.Replace("CCC", "")
line2 = line2.Replace("|CCC|", "||")
line3 = line3.Replace("CCC|", "|")
結果:
line1 = "AAA|BBB|||||EEE|FFF" -- OK, but fails when element is "..|ZZZCCCZZZ|.."
line2 = "AAA|BBB||CCC||CCC|EEE|FFF" -- Not OK
line3 = "AAA|BBB|||||EEE|FFF" -- OK, but fails similar to Line1 edge-case for "..|ZZZCCC|.."
我一直在使用正則表達式的嘗試,但得到了類似的結果。
下面真的沒有比這更好的方法嗎?
Do While line1.Contains("|CCC|")
line1 = line1.Replace("|CCC|", "||")
Loop
一旦它找到的第一個標記,它開始尋找_next_一個_after_該令牌。因此,它找到'| CCC |',將其替換,然後繼續,它看到的第一件事是'CCC |',它不匹配。 –