[英]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.