2017-06-21 34 views
-1

使用Ruby,我該如何拆分爲兩個或多個空格或製表符?這是我有:在Ruby中,如何拆分兩個或多個空格或選項卡?

2.4.0 :005 > str = "a\t\tb c d" 
=> "a\t\tb c d" 

和應用上面我的規則,我想結果是:

["a", "", "b", "c d"] 

由於連續的接片拍攝一個空字符串。但是,當我嘗試以下:

2.4.0 :007 > str.split(/(?:[[:space:]][[:space:]]+|\t)/) 
=> ["a", "b", "c d"] 

的標籤越來越合併成一個單一[[:space:]]

如何調整我的正則表達式分成兩個或多個空格或製表符?

+0

' 「一個\噸\ TBçd」 .split(/ + | \噸/)'' – mudasobwa

+0

\ s'或'[[:空間:]]'覆蓋標籤。所以,你必須在啓動移動'\ t' - 'str.split(/ \ T | \ S {2} /)' –

+0

不起作用。如果我的字符串是海峽=「AB \ t \ t \ TF」,在[「AB」,「F」從上述結果,但因爲我想拆就標籤和有三個選項卡在該字符串,結果shoulld be [「ab」,「」,「」,「f」] – Dave

回答

2

你可以試試這個:

"a\t\tb c d".split(/\t| {2,}/) 
#=> ["a", "", "b", "c d"] 

"ab \t\t\tf".split(/\t| {2,}/) 
#=> ["ab ", "", "", "f"] 

哪裏\t標籤{2,}兩個或多個空格。請注意,有一個空間{2,}之前。

要包括不間斷空格你可以添加\u00A0的表情,就像這樣:

str.split(/\t|[ |\u00A0]{2,}/) 

例子:

str = "a\t\tb \u00A0 c d"   #=> "a\t\tb   c d" 
str.split(/\t|[ |\u00A0]{2,}/) #=> ["a", "", "b", "c d"] 

str = "ab \t\t\tf"    #=> "ab \t\t\tf" 
str.split(/\t|[ |\u00A0]{2,}/) #=> ["ab ", "", "", "f"] 

哪裏[ |\u00A0]{2,}將檢查2次或多次出現的任何一個空間非換空間

+0

條款「{2,}」是否考慮了不間斷空格? – Dave

+0

@Dave你能提供一個示例字符串嗎? – Gerry

+0

不,我不能。我ahve閱讀 「[[:空間:]]」 包括破碎和非打破空間,但是當我使用預選賽, 「AB \ t \ t \ TF」 .split(/ \ t嘗試你的表情| [ :space:]] {2,} /),結果是[「ab」,「f」],這不是我想要的。也許我對這個「[[:space:]]」這個詞包含了兩個問題是錯誤的。 – Dave

相關問題