[英]Split string by every first space in ruby
我有一个字符串:
"AB C D E F"
我需要将其拆分为一个数组,使其看起来像:
[AB][C][ ][D][E][ ][F]
我在网上最多能找到的是用“”分割,它消除了每个空格,而另一种方式是只分割整个字符串中的第一个空格。
也许使用scan
可以使您的预期输出更容易:
p str.scan(/[A-Z]+|\s{3}/)
# ["AB", "C", " ", "D", "E", " ", "F"]
由于您的输入仅是大写字母,因此[AZ]
可以使用, /[az]/i
两种情况都适用。
想知道为什么这样的输出:
p str.scan(/[A-Z]+|\s{3}/).map(&:split)
# [["AB"], ["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(/\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"]
"AB C D E F".scan(/\S+|\s{2,}/)
#=> ["AB", "C", " ", "D", "E", " ", "F"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.