簡體   English   中英

在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,我必須更改此代碼。

更明確的地方出了什么問題:

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

那無處不在?


順便說一句,在Ruby 1.9.3中,沒有Enumerable#length沒有Enumerable#count 以后收到的別名length

在Ruby 1.9.3中的String# chars

將str中的每個字符傳遞到給定的塊, 如果沒有給出塊,則返回一個枚舉器。

因此,在調用length之前將其轉換為數組應該可以解決此問題:

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

嘗試key['name'].to_s.mb_chars.length 希望這對你有幫助。

您的問題被標記為ruby-on-railsblank? presence方法。 有了這些方法,我將編寫如下內容:

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

要么:

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

要么:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM