2016-10-23 123 views
0

本質上我有一個字符串: string str =「Hello ....我的名字是史蒂夫..我喜歡狗。正則表達式選擇「..」而不是「...」

我需要改變的事件「......」以上週期逼到3. 2需要任何事件成爲1

使用

Regex.Replace(str)

Regex.Replace(str,"[.]{3,}","...")工作在不斷變化的大大於3到3. 但我無法選擇2組「[。] {2}」,因爲3組由2組成......

我的最終字符串需要看起來像這個: string str = "Hello... My name is Steve. I like Dogs."

+0

爲什麼必須是正則表達式? –

+0

不需要是正則表達式,如果你知道不同的方法請詳細說明 –

回答

1

正則表達式負前瞻和回顧後:

(?<!\.)\.\.(?!\.) 
+0

我喜歡這個更多然後其他答案,因爲它是純正則表達式 –

+0

@JasonBrown嘗試'(?<!\。)\。\。(?!\。)| \。{3,}'正則表達式,因爲它覆蓋'多於3點'和'2點'的情況。 –

+0

但即時通訊使用regex.replace所以不會取代這兩個組?我想要的是用1個點替換2個點,用3個點替換3個或更多個點。 –

2

如果你被允許使用C#特點:

string input = "Hello.... My name is Steve.. I like Dogs."; 
string output = Regex.Replace(input, @"\.{2,}", m => m.Length == 2 ? "." : "..."); 
+0

我相信這個工作,謝謝! –