我有字符串:"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
平坦部分)