2012-11-28 80 views
4

我有一個問題,關於用正則表達式或任何其他最佳做法或有效的方式替換一些字符。
這是我作爲輸入,它具有幾乎相同的形式:A/ABC/N/ABC/123
輸出應該是這樣的:A_ABC_NABC123,本質上是第2 /應更改爲_,其餘的刪除。
當然,我可以做一些String.Replace。等等,但我認爲這不是一個好方法。我尋找更好的解決方案。替換/與正則表達式

那麼如何用正則表達式呢?

+1

取而代之的是罰款,你需要在這裏的東西,它是快(因爲它不具有解析正則表達式),看到這裏http://channel9.msdn.com/論壇/ TechOff/419168 - 哪一個更快 - RegEx-vs-Replace – mattytommo

回答

7

這將做到這一點,雖然有可能是一個更簡單的方法:

static class CustomReplacer 
{ 
    public static string Replace(string input) 
    { 
     int i = 0; 
     return Regex.Replace(input, "/", m => i++ < 2 ? "_" : ""); 
    } 
} 

var replaced = CustomReplacer.Replace("A/ABC/N/ABC/123"); 

我裹這樣的代碼,以確保你不小心的int變量。

編輯:還有this overload一定數量更換的後停止,但你必須做的兩個步驟:更換前兩個/_,然後替換剩餘/什麼也沒有。

+1

你讓它太複雜了;;) – Anirudha

0

試試這個:

string st = "A/ABC/N/ABC/123"; 
string [] arrStr = st.Split(new char[] { '/' }); 
st = string.Empty; 
for (int i = 0; i < arrStr.Length; i++) 
{ 
    if (i < 2) 
     st += arrStr[i] + "_"; 
    else 
     st += arrStr[i]; 
}