“0”在哪里消失了?

时间:2017-03-29 15:00:18

标签: ruby

str = "Blah00blah001"
str1 = ""
str1 = str.gsub(/[0-9]+$/,'')

print str.chars
puts
print str1.chars
puts

print str.chars - str1.chars

输出

["B", "l", "a", "h", "0", "0", "b", "l", "a", "h", "0", "0", "1"]
["B", "l", "a", "h", "0", "0", "b", "l", "a", "h"]
["1"]

我在上一次印刷中的期待

["0","0","1"]

我得到了什么

["1"]

为什么会这样?

2 个答案:

答案 0 :(得分:4)

这是预期的结果 - -函数就像设置差异一样,删除了第二个数组中出现的所有元素。 查看documentation

答案 1 :(得分:3)

Array#-的文档中的快速引用:

  

ary - other_ary→new_ary

     

返回一个新数组,该数组是原始数组的副本,删除也出现在other_ary中的所有项目。订单将从原始数组中保留。

说明后发布的示例显示了它的工作原理(与数组一样):

[ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ]  #=>  [ 3, 3, 5 ]