2017-03-25 19 views
0

/「作爲字符我想匹配與我可以使用下面的代碼使用Regex.Replace分裂的最大長度的字符串文本沒有打破我想文本(69個字符或更少在這種情況下)沒有打破的話,並使用任何空格或「分成特定長度的線話

var strText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." 
var lines = Regex.Split(strText, @"(.{1,69})(?:\s|/|$)") 
Console.WriteLine(string.Join("\n", Array.FindAll(lines,line => !string.IsNullOrEmpty(line)))); 

此代碼給我下面的結果與Regex.Split做換行符 更換(這是一個希望的)

Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed d o
eiusmod tempor incididunt ut labore et dolore magna aliqua。 UT enim
廣告微量veniam,QUIS nostrud實習ullamco laboris暫準UT斯達康
aliquip前EA commodo consequat。 DUIS奧特irure悲在
reprehenderit在voluptate velit埃塞cillum dolore歐盟fugiat法無
pariatur。 Excepteur燒結靶occaecat cupidatat非proident,必須遵守在
過失魁正式開通了deserunt mollit阿尼姆ID EST laborum。

我認爲可以得到與Regex.Replace相同的結果,但我無法這樣做。我試着用:

var lines = Regex.Replace(strText, @"(.{1,69})(?:\s|/|$)", "\n");

但它返回7個斷裂線字符

是否有可能取代空格或「/」,以便有7行69個字符或更少沒有打破的話嗎? (加分,如果一個襯墊代碼)

+1

檢查了這一點[自動換行,用正則表達式(HTTP ://stackoverflow.com/questions/20431801/word-wrapping-with-regular-expressions) – Vikhram

+0

@Vikhram這真的很有趣,我喜歡讀關於正則表達式的帖子一百萬和他們都沒有答案,但你的鏈接一樣。替換是「$ 1 \ n」而不是「\ n」,這是因爲前者將包含匹配,而後者則不包含匹配。請編輯答案將其標記爲解決方案 – 3vts

回答

1

您可以更改與捕獲的部分替換部分把所有的線路正確

var lines = Regex.Replace(strText, @"(.{1,69})(?:\s|/|$)", "$1\n"); 
相關問題