在ruby中的每个第一个空格中拆分字符串

时间:2018-04-22 01:01:45

标签: ruby string split

我有一个字符串:

"AB C   D E   F"

我需要将其拆分为数组,使其看起来像:

[AB][C][ ][D][E][ ][F]

我在网上找到的最多就是" ",它可以摆脱每个空间,另一种方式只能在整个字符串中按第一个空格分割。

3 个答案:

答案 0 :(得分:4)

使用scan可能会让您更轻松地获得预期的输出:

p str.scan(/[A-Z]+|\s{3}/)
# ["AB", "C", "   ", "D", "E", "   ", "F"]

由于您的输入仅为大写字符,[A-Z]可用,/[a-z]/i适用于两种情况。

想知道为什么这样的输出:

p str.scan(/[A-Z]+|\s{3}/).map(&:split)
# [["AB"], ["C"], [], ["D"], ["E"], [], ["F"]]

答案 1 :(得分:0)

分隔空格。

str="A B C  D E  F".split(/\s/)
#=> ["A", "B", "C", "", "D", "E", "", "F"]

str="A B C  D E  F".split(/\s|[a-z]/)
#=> ["A", "B", "C", "", "D", "E", "", "F"]

证明它有效,分裂空格,加入空间,然后再次分割空格。控制字符不受影响:)

str="A B C  D E  F".split(/\s|[a-z]/).join(" ").split(/\s|[a-z]/)
#=> ["A", "B", "C", "", "D", "E", "", "F"]

要探索的其他变体/选项:

str="A B C  D E  F".split(/(\s)/)
#=> ["A", " ", "B", " ", "C", " ", "", " ", "D", " ", "E", " ", "", " ", "F"]

str="A B C  D E  F".split(//)
#=> ["A", " ", "B", " ", "C", " ", " ", "D", " ", "E", " ", " ", "F"]

答案 2 :(得分:0)

"AB C   D E   F".scan(/\S+|\s{2,}/)
#=> ["AB", "C", "   ", "D", "E", "   ", "F"]