2017-03-08 76 views
1

在Ruby中嘿你如何拆分多个空格或制表符?我试过这个如何拆分多个空白区域或制表符?

2.4.0 :003 > a = "b\tc\td" 
=> "b\tc\td" 
2.4.0 :005 > a.strip.split(/([[:space:]][[:space:]]+|\t)/) 
=> ["b", "\t", "c", "\t", "d"] 

但是标签本身变成了标记,这不是我想要的。上述应返回

["b", "c", "d"] 
+0

使用'\ s +'模式进行分割功能,会返回你想要的。用法:'.split(/ \ s + /)' – MohaMad

回答

2

这是因为你使用的组是捕捉之一。见split reference

如果图案包含基团,相应的匹配结果将在阵列中,以及返回。

使用non-capturing group(仅用于分组模式),以避免增加匹配的字符串到结果数组:

a.strip.split(/(?:[[:space:]][[:space:]]+|\t)/) 
       ^^ 
0

在这种情况下,你可以使用一个字符类,包含两个空格和跳你的正则表达式:

"b\tc\td".split /[ \t]+/ 

如果你想拆就任何空格,您还可以使用[\s]+符号,它匹配所有空格字符。