Ruby 1.9 Array.to_s 表现不同?

标签 ruby string ruby-1.9

我编写了一个快速的小应用程序,它获取一个包含一些关键字的基本代码文件、一个关键字替换文件,并输出一个替换了关键字的新文件。

当我使用 Ruby 1.8 时,我的输出看起来不错。现在,当使用 Ruby 1.9 时,我替换的代码中包含换行符而不是换行符。

例如,我看到类似的东西:

["\r\nDim RunningNormal_1 As Boolean", "\r\nDim RunningNormal_2 As Boolean", "\r\nDim RunningNormal_3 As Boolean"]

代替:

Dim RunningNormal_1 As Boolean
Dim RunningNormal_2 As Boolean
Dim RunningNormal_3 As Boolean

我使用替换的散列 {"KEYWORD"=>["1","2","3"]} 和替换行的数组。

我用这个 block 来完成替换:

resultingLibs.each do |x|
  libraryString.sub!(/(<REPEAT>(.*?)<\/REPEAT>)/im) do |match|
    x.each do |individual|
      individual.to_s 
    end
  end
end
#for each resulting group of the repeatable pattern,
#  
#Write out the resulting libs to a combined string

我的预感是我正在打印数组而不是数组中的字符串。关于修复的任何建议。当我使用 puts 调试和打印替换的字符串时,输出看起来是正确的。当我使用 to_s 方法(这是我的应用程序将输出写入输出文件的方式)时,我的输出看起来是错误的。

修复会很好,但我真正想知道的是导致此行为的 Ruby 1.8 和 1.9 之间发生了什么变化。 to_s 方法在 Ruby 1.9 中是否发生了某种变化?

*我对 Ruby 没有经验

最佳答案

是的,您正在对字符串数组调用 to_s。在1.8中相当于调用join,在1.9中相当于调用inspect

要在 1.8 和 1.9 中获得您想要的行为,请调用 join 而不是 to_s

关于Ruby 1.9 Array.to_s 表现不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3960392/

相关文章:

ruby-on-rails - rails 3.1 : how to run an initializer only for the web app (rails server/unicorn/etc)

java - 字符串以 '\n' 结尾最有效的操作方法是什么?

string - 如何从字符串中删除 '#' 注释?

ruby - ruby/rails 中的 openssl smime

ruby - 命令 "ruby"在我的 Mac 上什么都不做

ruby - MacOS Sierra 上带有 RMagick 2.16 的 ImageMagick 7 找不到 MagickWand.h

regex - Ruby 正则表达式用哈希模式替换子字符串

ruby - 具有散列的方法和未运行的 proc 参数

debugging - 如何找出 Ruby 中使用 at_exit 方法注册了哪些回调?

ruby - 为什么安装ruby1.9.2后我的ruby版本在ubuntu上还是老版本?