Neden line2
yalnızca gerçekleşen olayların yarısını değiştiriyor?String.Replace tüm eşleşmelerin yerini almıyor
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|", "|")
Sonuç:
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|.."
Ben RegEx kullanarak çalıştı, ancak benzer sonuçlar elde var.
Bundan daha iyi bir yolu yok mu, aşağıda? ilk belirteci bulduğunda
Do While line1.Contains("|CCC|")
line1 = line1.Replace("|CCC|", "||")
Loop
ilk belirteci bulduğunda o simge _after_ _next_ bir aramaya başlar. Böylece, | CCC | 'yi bulur, yerini alır, sonra devam eder ve gördüğü ilk şey, 'CCC |' ile eşleşmez. –