Tag: ruby 1.9

在ruby 1.9中是否有一种方法可以从字符串中删除无效的字节序列?

假设你有一个像”€foo\xA0″这样的字符串,编码为UTF-8,有没有办法从这个字符串中删除无效的字节序列? (所以你得到”€foo” ) 在ruby-1.8中你可以使用Iconv.iconv(‘UTF-8//IGNORE’, ‘UTF-8’, “€foo\xA0”)但现在已弃用。 “€foo\xA0”.encode(‘UTF-8’)没有做任何事情,因为它已经是UTF-8了。 我试过了: “€foo\xA0″.force_encoding(‘BINARY’).encode(‘UTF-8’, :undef => :replace, :replace => ”) 产量 “foo” 但这也失去了有效的多字节字符€

如何获取BasicObject实例的类?

我有一个脚本,使用ObjectSpace#each_object迭代,没有args。 然后它打印每个类存在多少个实例。 我意识到有些类重新定义了#class实例方法,所以我必须找到另一种方法来获得实际的类; 假设它存储在变量”klass” ,而klass === object为true。 在Ruby 1.8中,我可以这样做,假设Object没有被monkeypatched: Object.instance_method(:class).bind(object).call 这适用于ActiveSupport::Duration实例: # Ruby 1.8 # (tries to trick us) 20.seconds.class => Fixnum # don’t try to trick us, we can tell Object.instance_method(:class).bind(20.seconds).call => ActiveSupport::Duration 但是,在Ruby 1.9中,这不再起作用: # Ruby 1.9 # we are not smart… Object.instance_method(:class).bind(20.seconds).call TypeError: bind argument must be an instance of Object from […]

Ruby 1.9中新哈希语法有什么好处?

除了使用符号作为键来定义哈希更简洁之外,编写哈希还有其他好处: {key1: “value1”, key2: “value2”}而不是{:key1 => “value1”, :key2 => “value2”} ? 此外,当您将字符串和符号混合为散列键时,常规是什么? 你把它写成{“key1” => “value1”, key2: “value2”}或者将样式保持为{“key1” => “value1”, :key => “value2”}

Ruby 1.9 Array.to_s的行为有何不同?

我写了一个快速的小应用程序,它采用一些代码的基本文件和一些关键字,一个替换关键字的文件,并输出一个替换关键字的新文件。 当我使用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”]}和替换行的数组。 我用这个块完成更换: resultingLibs.each do |x| libraryString.sub!(/((.*?))/im) do |match| x.each do |individual| individual.to_s end end end #for each resulting group of the repeatable pattern, […]