2016-03-16 155 views
0

我有一個像串st ="12,34,56,345,12,45"一個字符串,我想從這個字符串我不喜歡string newst = st.replace(",34","");刪除號碼34,但它是從345,如何防止這種情況 編輯刪除34 34可以在任何地方,我在這裏動態如何從字符串中刪除數字符在C#中

回答

2

這將工作:

var oldString = "34,12,34,56,345,12,45,34"; 
var newString = String.Join(",", oldString.Split(',').Where(x => x != "34")); 

我們各執',',使用LINQ排除"34",然後通過','加入串到一起。

+0

正確的一個,LINQ功能強大,代碼少 – peter

2

產生試試這個

string newst = st.replace(",34,",","); 

誠然這只是作品,如果你想更換爲兩個逗號之間。如果你想要的東西更先進,使用Regex.Replace()

下面是一個例子:

字符串溫度= Regex.Replace( 「12,34,56,345,12,45」,@ 「^ 34」, 「」) ; string newst = Regex.Replace(temp,@「34 $,」,「」);

您也可以使用String.TrimStart.TrimEnd清理邊界。

另外,我喜歡crashmstr的例子。

+1

假設'34'是不是在開頭或結尾。 – crashmstr

+0

但如果34是最後一個號碼呢?逗號不是爲了 – peter

+0

它可以在任何地方 – peter

3

這很簡單:

var st ="12,34,56,345,12,45"; 
var newst = st.replace(",34,", ","); 

如果它可以在任何地方,你可以使用the regular expression

var input = "34,234,35,36,34,37,345,34"; 
var pattern = @",?\b34\b,?"; 
var regex = new Regex(pattern); 
var result = regex.Replace(input, ",").Trim(','); 

較短的符號看起來是這樣的:

var result = Regex.Replace(input, @",?\b34\b,?", ",").Trim(','); 

的說明正則表達式:,?\b34\b,?與單詞34相匹配,但前提是前後都有單詞分隔符(由於單詞邊界元字符\b),並且它可以(但不一定是)在逗號前後感謝,?其中表示沒有或多個逗號。

最後,我們需要從字符串的開頭和結尾刪除可能的逗號,這就是爲什麼結果中有Trim(',')

但我會說@ crashmstr的解決方案比試圖調整這個特定用例的正則表達式更好。

+0

34可以在任何地方 – peter

+0

不要*有*使用正則表達式,你也可以使用LINQ。 – crashmstr

+0

@crashmstr好的,謝謝。 –

1

分裂和工作列表:

string[] arr = st.Split(','); 
List<string> list = arr.ToList(); 
list.Remove("34"); 

或正則表達式:

var replaced = Regex.Replace(st, @"\b34\b[,]","");