2011-06-29 43 views
3

刪除一個空格的正則表達式是什麼? 如:刪除一個空格的正則表達式

H e l l o W o r l d ----> Hello World 

(請注意,仍然有在世界您好之間有一個空格它在之間的兩個空間開始。)

通知你,我用C#正則表達式的工作: 以前我做這樣的事情,但它不能正常用於上述情況下工作:

Regex pattern = new Regex(@"[ ]{2,}"); 
pattern.Replace(content, @" ") 
+0

(某人隱藏了這個答案)爲什麼你需要這裏的正則表達式?你不能只使用[Replace](http://msdn.microsoft.com/en-us/library/fk49wtc1(v = VS.80).aspx)來做'content.Replace(「」,「」)'字符串 –

+1

@Ivan這將刪除所有空格。 – trutheality

+0

您是否正在以'UTF-8'或'ASCII'讀取UTF-16文件? –

回答

5

要從一個或空格的所有組中刪除一個空間,使用

pattern = Regex.Replace(content, " (*)", "$1"); 

要更改Ñ空格地板(Ñ/2)的空間中,使用

pattern = Regex.Replace(content, " (?)", "$1"); 

我試圖添加的例子,但即使在內聯代碼跨越它似乎stackoverflow整合空白。


說明中,作爲請求:第一發現的空間,隨後通過零米或更多的空間和與所述零個或多個空格替換它,由1減少的長度的第二個發現的每一個組中的一個或兩個空間和將其替換爲零或一個空格,在一個替換中將1更改爲1,將一個替換中的替換爲2至1,對兩個替換中的替換爲3至2等。

+0

This Works!謝謝!有人可以解釋爲什麼這項工作? – Victorgalaxy

+2

@Victor我試圖理解正則表達式許多次並失敗。我的結論是它是某種形式的巫術...... – w69rdy

+0

@ w69rdy:不要泄露我的祕密,否則我會在你的洋娃娃中放入另一根針。 ;-) – Charles

-1

表達 「[\ S] {1}」 應該這樣做

2

嘗試使用負面預覽。

Regex pattern = new Regex(@"\s(?!\s)"); 
Console.WriteLine(pattern.Replace(content, "")) 
1

如果我明白你想刪除每個出現一個或多個連續空格的確切空間。

爲此,您需要創建一個正則表達式,它匹配每個這樣的事件,將除了一個空格之外的所有空格都放入一個捕獲組中,然後用捕獲組替換每個事件。因此,如果有兩個空格相鄰,則會發現它們是一個匹配項,第二個空間會進入捕獲組。所以在更換之後,兩個空間已經縮小到一個空間。

Regex pattern = new Regex(@" (*)"); 
String newString = pattern.Replace("H e l l o W o r l d", "$1"); 
// newString == "Hello World" 
0

匹配一個空白後跟一個非空白和刪除這些空格。

Regex.Replace(input, @"(\s)(\S)", @"$2"); 

它看起來就像是與每個字符後添加空格的字符串。如果是這樣,那麼你可以通過只檢索字符串中的偶數索引字符來獲得原始字符串。

var input = "H e l l o W o r l d "; 
var res = String.Join("", input.Where((c, i) => (i % 2) == 0)); 
0

另一種方法是使用一個匹配評估使用雙字符匹配:

string s = Regex.Replace("H e l l o W o r l d", @"\s\S", x => x.Value[1].ToString()); 
0

絕不是給你的問題的性質的通用解決方案,但在這種特殊情況下,它看起來就好像你可以通過去掉任何一邊接觸單詞字符的空格來逃避:例如:在左邊,例如:

Regex.Replace(content, " \b", "");