2010-03-25 13 views

回答

5

您可以通過濫用lookahed實現這一目標:

Regex.Replace(str, @"(?<=^\w?(\s\w)*)\s(?=\w\s)", "_"); 

找到處於的空間和單個字母序列後的空間,和之前另一個這樣的信。請注意,這不適用於所有正則表達式,但.net可以很好地處理它。

另一種選擇是使用MatchEvaluator:

Regex.Replace(str, @"^(\w)+", 
       match => match.Value.TrimEnd().Replace(' ', '_') + " "); 

在這個版本的正則表達式是容易的,但我們做了一些後處​​理 - 功能刪除最後空間,並取代所有其他空間用下劃線。

5
Regex.Replace(yourstring, "^x y z ", "x_y_z ") 

當然會這樣做。你想要概括的多少取決於你想要替換的「符號後跟空格」究竟是什麼(假定你不想在你的示例字符串中替換word1以後);例如,如果你想更換正好是三單字符識別(後跟空格)在字符串的開始,正確的概括是:

Regex.Replace(yourstring, "^([a-z]) ([a-z]) ([a-z]) ", "$1_$2_$3 ") 

,但如果你想更換標識的不同數量是不同的或不同長度的標識符等。告訴我們您想要替換的內容(以及您想要停止替換的位置),我們可以在我們的建議中更具體。

+1

是由x y z我的意思是一個單個字符序列,但這些字符的數量是可變的。 – MicMit 2010-03-25 04:21:17