2011-03-31 72 views

回答

7

您可以使用此:

yourString.Split("-").Select(s => Regex.Replace(s, "^5$", "2")).Aggregate((a,b) => a + "-" + b); 

相反對於大多數其他答案,這也處理了這種情況,即當要替換的字符串位於輸入字符串的開始或結尾時。

+0

結束我喜歡這個,因爲它適用於任何集合,因爲我的解決方案只適用於示例集合。 – cadrell0 2011-03-31 14:01:46

3

您將需要更換-5-與-2-

+0

+1雖然你的方法只適用於示例集,而不適用於具有不同分隔符的集合,但我更喜歡你的解決方案,而不是使用正則表達式,因爲你的方法更容易閱讀,而且不太重。我認爲,通過一些小調整,您的方法將適合OP的需求,並且不需要昂貴的正則表達式。 – Bazzz 2011-03-31 14:04:05

+0

@Bazzz:我不認爲這可以通過符合所有要求的方式進行調整。一個不能正常工作的簡單解決方案首先不是解決方案。 – 2011-03-31 14:06:19

2

試試這個

yourString = yourString.Replace("-5-","-2-"); 
+1

它不會在這樣的情況下工作:5-2-3-5 – 2011-03-31 13:59:39

+0

@Pawel那個集合中沒有5個,所以沒有東西可以替代。如果你想要一組領先的5,那麼@Stecya和我的解決方案都不會起作用。爲此,請使用@Daniel的解決方案。 – cadrell0 2011-03-31 14:02:59

+0

@pawel ......亞,但在我的程序中,這種情況不存在 – 2011-03-31 14:06:02

0

你有一個分隔符。

E.g.如果你真的有字符串鏈接1-2-5 ...你可以用-2代替'-5'。

+1

if有'-52-'你會以'-22-' – Stecya 2011-03-31 14:00:47

2

,你可以使用正則表達式替換和替換正則表達式像

[^\d]*5[^\d]*匹配5沒有任何號碼旁邊

4
new Regex(@"\b5\b").Replace("1-2-5-7-8-9-10-15", "2"); 

\b匹配單詞邊界。這意味着'-5'將會匹配,但'-15'不會。

它也將處理匹配在字符串的邊緣並且在兩側都沒有連字符的情況,例如, '5'和'-5'。