我有一个字符串:
"AB C D E F"
我需要将其拆分为数组,使其看起来像:
[AB][C][ ][D][E][ ][F]
我在网上找到的最多就是" ",它可以摆脱每个空间,另一种方式只能在整个字符串中按第一个空格分割。
答案 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"]