1

代码:

digits.each do |digit|
  puts digit.content #&0000000000032056.00000032 056
  value = digit.content[24..-1].strip
  puts value #32 056 it's ok
  puts value.gsub(/\s+/, "") #32 056 !!!! I expected 32056
  population << value
end

我不明白为什么 gsub 不能按我的预期工作:/ 有人可以帮忙吗?

[编辑]

无论如何,我用另一种方式做:

  value = digit.content.split(".")[0]
  value = value[12..-1].strip

但我仍然想知道,为什么第一个解决方案很糟糕。

4

3 回答 3

1

拿走你需要的!

value.gsub(/[^0-9]+/, '')
于 2012-08-15T06:27:17.217 回答
1
digit='&0000000000032056.00000032 056'
value = digit[24..-1].strip
puts value #32 056
puts value.gsub(/\s+/, "") #32056

你的值是字符串吗?

于 2012-05-04T09:20:33.437 回答
1

有两件事要尝试:

如果您正在检查population变量,则您的方法实际上并没有将替换放入其中。将最后一行更改为:

population << value.gsub(/\s+/, "")

如果这仍然不起作用,也许在您的终端中有一些看起来像空格的非空格字符?尝试替换非数字:

population << value.gsub(/\D/, "")
于 2012-05-04T09:24:56.077 回答