我有字符串:"how to \"split string\" to \"following array\""
(如何「拆分字符串」到「以下數組」)。分割字符串與紅寶石
我想下面的數組:
["how", "to", "split string", "to", "following array"]
我試圖split(' ')
但結果是:
["how", "to", "\"split", "string\"", "to", "\"following", "array\""]
我有字符串:"how to \"split string\" to \"following array\""
(如何「拆分字符串」到「以下數組」)。分割字符串與紅寶石
我想下面的數組:
["how", "to", "split string", "to", "following array"]
我試圖split(' ')
但結果是:
["how", "to", "\"split", "string\"", "to", "\"following", "array\""]
x.split('"').reject(&:empty?).flat_map do |y|
y.start_with?(' ') || y.end_with?(' ') ? y.split : y
end
說明:
split('"')
將分割字符串以不引號的方式字符串將具有前導空間或尾隨空間,並且引用的空間不會。flat_map
將進一步拆分單個字符串的空間,只要它屬於非引用類別。請注意,如果有兩個連續引用的字符串,它們之間的空格將是它自己的字符串在第一個空格之後,並且在第二個空格之後將完全消失。又名:
'foo "bar" "baz"'.split('"') # => ["foo ", "bar", " ", "baz"]
' '.split # => []
的reject(&:empty?)
是必要的情況下,我們開始用帶引號的字符串作爲
'"foo"'.split('"') # => ["", "foo"]
隨着x
爲您的字符串:
x.split(?").each_slice(2).flat_map{|n, q| a = n.split; (a << q if q) || a }
當你分開報價,你肯定知道每個str荷蘭國際集團在陣列中有云:無報價,報價,無報價,報價,無報價等..
如果我們將這些分成兩人一組,然後我們得到以下兩種情況之一:
[ "non-quoted", "quoted" ]
[ "non-quoted", nil ]
(僅有史以來最後一對不平衡字符串)例如1,我們分裂NQ和追加q
例如如圖2所示,我們分離NQ並丟棄q
即:a = n.split; (a << q if q) || q
然後我們加入所有對備份(的flat_map
平坦部分)