2016-03-01 58 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