試圖學習更多關於使用正則表達式(正則表達式)。使用微軟的正則表達式在C#(VS 2010)的版本,我怎麼可能拿一個簡單的字符串,如:如何使用正則表達式插入字符之間的空格?
"Hello"
,並更改爲
"H e l l o"
這可能是任何字母或符號的字符串,大寫字母,小寫字母等,並且沒有其他字母或符號跟隨或引導這個詞。 (該字符串只包含一個單詞)。
(我已閱讀其他帖子,但我似乎無法掌握正則表達式,請親切:))。
感謝您的任何幫助。 (解釋將是最有用的)。
試圖學習更多關於使用正則表達式(正則表達式)。使用微軟的正則表達式在C#(VS 2010)的版本,我怎麼可能拿一個簡單的字符串,如:如何使用正則表達式插入字符之間的空格?
"Hello"
,並更改爲
"H e l l o"
這可能是任何字母或符號的字符串,大寫字母,小寫字母等,並且沒有其他字母或符號跟隨或引導這個詞。 (該字符串只包含一個單詞)。
(我已閱讀其他帖子,但我似乎無法掌握正則表達式,請親切:))。
感謝您的任何幫助。 (解釋將是最有用的)。
你可以通過正則表達式來完成,不需要內置的c#函數。 使用下面的正則表達式,然後用空格替換匹配的邊界。
(?<=.)(?!$)
string result = Regex.Replace(yourString, @"(?<=.)(?!$)", " ");
說明:
(?<=.)
正回顧後發斷言,這場比賽必須由一個字符開頭。(?!$)
否定性超前,它聲明該匹配不會跟着行錨的結尾。因此,所有字符旁邊的邊界將被匹配,但不是最後一個字符旁邊的邊界。OR
你也可以使用單詞邊界。
(?<!^)(\B|b)(?!$)
string result = Regex.Replace(yourString, @"(?<!^)(\B|b)(?!$)", " ");
說明:
(?<!^)
負回顧後,其斷言,這場比賽將不會在啓動。(\B|\b)
匹配存在於兩個單詞字符和兩個非單詞字符(\B
)之間的邊界或匹配存在於單詞字符和非單詞字符(\b
)之間的邊界。(?!$)
負前瞻斷言該匹配不會跟着行錨的結尾。Regex.Replace("Hello", "(.)", "$1 ").TrimEnd();
說明
$n
表示法來引用捕獲的字符。$1
表示輸入中的第一個捕獲組,因此我們的替換字符串將用該字符替換每個字符加上一個空格。String.Join(" ", YourString.Select(c => c))
你能解釋一下語法請:
對於發燒友來說,同樣的效果可以通過LINQ使用此一班輪實現?謝謝。 –
@Raj謝謝。所有的答案都很好,但我正在尋找一個純粹的Regex聲明。任何想法爲什麼downvote上一個學習的問題:(? –
我不知道你的問題有什麼問題,但你必須顯示你的企圖。 –