计算 ruby 中的字符数 1.9.3 错误

Counting chars in ruby 1.9.3 error

我正在计算字符串长度,如下所示:

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 我必须更改此代码。

在 Ruby 1.9.3 String#chars

Passes each character in str to the given block, or returns an enumerator if no block is given.

因此在调用 length 之前将其转换为数组应该可以解决问题:

key['name'].to_s.chars.to_a.count == 0 # or size ?

更显式有什么问题:

key['name'] = "Others" if key['name'].to_s.empty?

哪里都适用?


顺便说一句,在 ruby 1.9.3 中没有 Enumerable#lengthEnumerable#count。后来收到的别名length

尝试key['name'].to_s.mb_chars.length。希望这会帮助你。

您的问题带有 ruby-on-rails 标记,其中包含 blank? and presence 方法。使用这些方法我会写类似的东西:

if key['name'].blank?
  key['name'] = 'Others'
end

或:

key['name'] = 'Others' if key['name'].blank?

或者:

key['name'] = key['name'].presence || 'Others'