2012-06-04 75 views
0

我想拆分字符串並創建一個集合,並遵循以下規則: 字符串應該被拆分爲單詞。如何拆分字符串保留空格和任意數量的 n字符

1)如果字符串包含'\ n',則應該將其視爲單獨的'\ n'字。
2)如果字符串包含多個'\ n',它應該認爲它比\'n'更多。
3)不應該從字符串中刪除空格。唯一的例外是,如果空間在兩個之間\ n它可以被忽略。

PS:我嘗試了很多與字符串拆分,首先拆分\ n字符並創建了一個集合,缺點是,如果我有兩個\ n連續,我無法創建兩個虛擬單詞到集合中。任何幫助將不勝感激。

enter image description here

反正有沒有做到這一點使用正則表達式?

+1

你試過Regex.Split:

如果你真的想要刪除\n S之間的空間,你可以用類似分裂? http://msdn.microsoft.com/en-us/library/8yttk7sy.aspx – kol

回答

1

與分割這樣的正則表達式:

(?<=[\S\n])(?=\s) 

喜歡的東西:

var substrings = Regex.Split(input, @"(?<=[\S\n])(?=\s)"); 

這不會刪除任何空間可言,但並不要求那麼應該罰款。

(?<=[\S\n])(?=\s)(?:[ \t]+(?=\n))? 
1

看起來像功課。因此,read up on \b

應該讓你在正確的方向。

+0

這可能不會工作,因爲它檢測到'\ S'->'\ s'和'\ s'->'\ S' (其中只有一個是想要的),但不是'\ s'->'\ n'或'\ n'->'\ s'。 – Wormbo

+0

@Wormbo,這僅僅是爲了讓OP開始。 OP的規範沒有正則表達式和魔力。因此,'\ b'(單詞邊界)可以說是唯一最好的起點。 –

+0

確實如此,但是從瞭解預定義的單詞邊界構造並知道更多基本構造來自己構建它,這有很大的提升空間。 – Wormbo

相關問題