如何在c#中替換一些字符黑白字符串?如何在c#中替換一些字符黑白字符串?
假設
字符串是:1-2-5-7-8-9-10-15
我使用替換功能
當我與2
更換5
也替換最後15
到12
因爲5
那裏。
所以我怎麼才能得到正確的輸出?
如何在c#中替換一些字符黑白字符串?如何在c#中替換一些字符黑白字符串?
假設
字符串是:1-2-5-7-8-9-10-15
我使用替換功能
當我與2
更換5
也替換最後15
到12
因爲5
那裏。
所以我怎麼才能得到正確的輸出?
您可以使用此:
yourString.Split("-").Select(s => Regex.Replace(s, "^5$", "2")).Aggregate((a,b) => a + "-" + b);
相反對於大多數其他答案,這也處理了這種情況,即當要替換的字符串位於輸入字符串的開始或結尾時。
您將需要更換-5-與-2-
+1雖然你的方法只適用於示例集,而不適用於具有不同分隔符的集合,但我更喜歡你的解決方案,而不是使用正則表達式,因爲你的方法更容易閱讀,而且不太重。我認爲,通過一些小調整,您的方法將適合OP的需求,並且不需要昂貴的正則表達式。 – Bazzz 2011-03-31 14:04:05
@Bazzz:我不認爲這可以通過符合所有要求的方式進行調整。一個不能正常工作的簡單解決方案首先不是解決方案。 – 2011-03-31 14:06:19
試試這個
yourString = yourString.Replace("-5-","-2-");
它不會在這樣的情況下工作:5-2-3-5 – 2011-03-31 13:59:39
@Pawel那個集合中沒有5個,所以沒有東西可以替代。如果你想要一組領先的5,那麼@Stecya和我的解決方案都不會起作用。爲此,請使用@Daniel的解決方案。 – cadrell0 2011-03-31 14:02:59
@pawel ......亞,但在我的程序中,這種情況不存在 – 2011-03-31 14:06:02
,你可以使用正則表達式替換和替換正則表達式像
[^\d]*5[^\d]*
匹配5沒有任何號碼旁邊
new Regex(@"\b5\b").Replace("1-2-5-7-8-9-10-15", "2");
\b
匹配單詞邊界。這意味着'-5'將會匹配,但'-15'不會。
它也將處理匹配在字符串的邊緣並且在兩側都沒有連字符的情況,例如, '5'和'-5'。
結束我喜歡這個,因爲它適用於任何集合,因爲我的解決方案只適用於示例集合。 – cadrell0 2011-03-31 14:01:46