2017-06-12 99 views
-5

如何作为分隔符与-ve数字劈RUBY例如 如果x = 989-7516-354 如果我们用现在被那么它应该打印 9,8,9,5, 1,6,5,4拆分负数作为分隔符

+3

什么是 “-ve” 是什么意思?什么是'989-7516-354',一个字符串?你的结果/输出与分隔符有什么关系? '-7'和'-3'似乎不见了。如果它们是分隔符,结果应该是'989','516'和'54'。 – Stefan

回答

0
x.split(/-\d/).map{|n| n.split(//)}.flatten 
2

你的问题不是很清楚。以负数分隔(假设:单个数字)作为分隔符将给予

["989", "516", "54"]

为了得到想要的输出,试试这个。

x = "989-7516-354" 
x.gsub(/-\d/, '').chars 
# => ["9", "8", "9", "5", "1", "6", "5", "4"] 
0
x = '989-7516-354' 
x.split(/(-\d)?/).map(&:to_i).reject(&:negative?) 
# => [9, 8, 9, 5, 1, 6, 5, 4] 
+0

这不是预期的输出。 – Santhosh

+0

@Santhosh ty指出这一点,我编辑了我的答案 – MikDiet

0

感谢a negative lookbehind,你只需要scan-为前面数字的字符串:

"989-7516-354".scan(/(?<!-)\d/) 
# => ["9", "8", "9", "5", "1", "6", "5", "4"]