计算 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#length
有 Enumerable#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'
我正在计算字符串长度,如下所示:
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#length
有 Enumerable#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'