在Ruby中,如何拆分两个或多个空格或制表符?

时间:2017-06-21 13:52:56

标签: ruby string split tabs

使用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:]]

如何调整正则表达式以拆分为两个或多个空格或制表符?

1 个答案:

答案 0 :(得分: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,}将检查空间不间断空间的两次或更多次出现。