2016-03-15 31 views
2

我一直在尋找從一個同事一些代碼,它看起來好像他們正在使用他們的一個與string.replace字符數組:使用多個與string.replace值

txtPAPTransit.Text = g_aAllBranches(instApplication.branchForCumisReporting.ToLower).transit.ToString.Replace({" "c, "-"c}, "").Substring(3) 

這不會刪除文本框中字符串的「 - 」(字符串爲123-45678)。當我嘗試使子字符串爲4而不是3時,它起作用。這讓我感到非常奇怪,爲什麼當索引爲0時,它在這種情況下會表現得如此呢?

當我寫的替換這樣的正常工作:

txtPAPTransit.Text = g_aAllBranches(instApplication.branchForCumisReporting.ToLower).transit.ToString.Replace("-"c, "").Substring(3) 

之後的字符串顯示爲45678,這是正確的結果。

爲什麼它會在我用上面提到的4替換子字符串的情況下工作?爲什麼它有char數組的問題?

+0

你能不能給我們一個樣本值,所以我們可以跟着? – Plutonix

+0

爲什麼你會期望第一個例子從文本框中刪除「 - 」?第一個參數是要刪除的內容,在這種情況下,它將被替換爲 - –

+0

@ScottMarcus但是如果您注意到.Replace在其'oldValue'位置有一個char數組。 .Replace({「」c「, - 」c「,」)如果邏輯正確,將意味着它將代替一個空格或一個短劃線。但是,替代似乎無法處理這一點。 –

回答

3

Replace的用法不正確 - 或者您的同事對此有所瞭解是有缺陷的。 2.重載是:

- String.Replace(Char, Char) 
- String.Replace(String, String) 

所以,Replace({" "c, "-"c}, "")不會採取行動,以取代任何空間和String.Empty任何破折號。相反,由於char數組的一個字符串,因此它會替代" -"(空格+短劃線),如「123 -45678」中所示。

正確的方法,以取代要麼是:

Dim sample = "123- ABCDEFG"  
newTxt = sample.Replace(" "c, "").Replace("-"c, "") 

「123ABCDEFG」

+1

感謝您的幫助!我已經用2 Replace函數編寫了正確的方法,現在它工作的很好! –

+0

很高興提供幫助 - 在Q中長時間表達很難遵循例子,因爲「問題部分」被滾動掉 – Plutonix