2016-03-01 68 views
-2

字符串大寫不起作用的原因是什麼?字符串大寫不起作用

數據庫柱:

t.string "name",  limit: 255 

一些示例:

flower_name = Flower.find_by(id: 1).name #=> "chamomile©" 

試圖利用(得到了相同的輸出):

flower_name.capitalize #=> "chamomile©" 

檢查它是否是字符串:

flower_name.is_a?(String) #=> true 
+0

什麼'flower_name.chars'和'flower_name.codepoints'回來嗎? – Stefan

+0

有人可能會否認'capitalize'方法? – spickermann

+0

在控制檯上做一個簡單的測試:flower_name =「John Do」,嘗試再次嘗試大寫。如果不起作用,該方法可能會被覆蓋。你可以刪除儘可能多的寶石,你可以再試一次,看看消除是否會解決它。 – Roger

回答

5

capitalize僅適用於ASCII字符。有沒有可能你的字符串包含非ASCII字母?

嘗試

flower_name.mb_chars.capitalize.to_s 
+0

非常感謝!工作就像一個魅力:) – Zelenka

+1

@Zelenka你的問題不包括任何非ASCII字符。我錯過了什麼嗎? – Stefan

+1

出於安全原因,我更改了輸出字。但是你是對的,我會編輯我的問題,爲未來的讀者添加一個非ASCII字符。謝謝,斯蒂芬! – Zelenka

2

mb_chars方法可以幫助你,如果你正在使用滑軌> = 3

'æ-ý'.mb_chars.upcase 

=> "Æ-Ý" 

如果你不使用Rails,您可以:

  • 直接使用active_support寶石:

    require 'active_support/core_ext/string/multibyte'

  • 嘗試unicode寶石。

我希望你能在這個類似的問題找到答案:Special character uppercase