簡體   English   中英

紅寶石中的每個第一個空格分割字符串

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM