【发布时间】:2013-02-05 17:55:26
【问题描述】:
为什么line2 只替换了交替出现的一半?
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|.."
我曾尝试使用 RegEx,但得到了类似的结果。
下面真的没有比这更好的方法了吗?
Do While line1.Contains("|CCC|")
line1 = line1.Replace("|CCC|", "||")
Loop
【问题讨论】:
-
一旦找到第一个标记,它就会开始寻找 next after 该标记。所以它找到
|CCC|,替换它,然后继续,它看到的第一件事是CCC|,它不匹配。
标签: .net vb.net string replace