我正在计算字符串长度,如下所示:
if(key['name'].to_s.chars.length==0)
key['name']="Others"
end
在ruby 2.1.8p440上它可以工作,但是在ruby 1.9.3p551上它会抛出以下错误:
(undefined method `length' for #<Enumerator: "Latency":chars>):
我无法更新1.9.3我必须更改此代码。
答案 0 :(得分:5)
更明确的是什么问题:
key['name'] = "Others" if key['name'].to_s.empty?
无处不在?
顺便说一下,在ruby 1.9.3中,Enumerable#length
没有Enumerable#count
。后来收到的别名length
。
答案 1 :(得分:2)
在Ruby 1.9.3中String#chars
将str中的每个字符传递给给定的块,如果没有给出块,返回一个枚举器。
因此,在调用length
之前将其转换为数组应该可以解决问题:
key['name'].to_s.chars.to_a.count == 0 # or size ?
答案 2 :(得分:0)
尝试key['name'].to_s.mb_chars.length
。希望这会对你有所帮助。
答案 3 :(得分:0)