回答
栏杆active_support gem有可以处理这个的字符串扩展。
例如:
# $ sudo gem install activesupport
require 'active_support/core_ext/string'
'Laurent, où sont les tests ?'.mb_chars.upcase.to_s
# outputs => "LAURENT, OÙ SONT LES TESTS ?"
这并不是一个西里尔字母 工作提出 “ТОВАЕТЕСТ” .downcase => “ТОВАЕТЕСТ” – 2011-04-13 18:54:45
红宝石只支持上的字母A
– Z
和a
– z
的情况下的转换。
原因很简单,其他字母的大小写转换没有很好的定义。例如,土耳其语'I'.downcase # => 'ı'
和'i'.upcase # => 'İ'
,但法文'I'.downcase # => 'i'
和'i'.upcase # => 'I'
。 Ruby不仅需要知道字符编码,还需要知道正确的语言。
更糟糕的是,在德国
'MASSE'.downcase
是要么
'maße' # "measurements"
'masse' # "mass"
换句话说:你需要真正了解文本,即你需要一个全面的AI,正确执行案例转换。
而且我自己实际上意外地构造了一次句子,即使对于人类也是不可判定的。
简而言之:这是不可能做到的,这就是为什么Ruby不这样做在所有。有第三方库,但是,像Unicode的图书馆和的ActiveSupport,这做支持字符稍大的子集。
甲苯基cevap,约尔格。 – 2014-10-31 14:16:57
"ТЕКСТ".mb_chars.downcase # => "текст"
不幸的是,在Ruby 1.9中不支持downcase/upcase,因为其他帖子中描述的问题。你仍然可以写你自己的宝石,这将增加对西里尔文的支持。你可以看一下我的gem for Polish - 打开正确的情况下,折叠一样简单:
gem 'string_case_pl'
它还提供适当的字符串排序波兰。
- 1. 如何在字符串上使用indexOf方法多次提取字符串?
- 2. 在C中使用utf8字符串
- 3. 字符串限制字 - UTF8
- 4. 如何将utf8字符串转换为ascii字符串?
- 5. 如何将字符串转换为UTF8?
- 6. Utf8 - 如何清理这些字符串?
- 7. 获取UTF8字符串
- 8. iOS:解码utf8字符串
- 9. libpqxx postgresql utf8字符串
- 10. 编码字符串UTF8
- 11. iphone xml-rpc utf8字符串
- 12. 如何从UTF8字符串中删除控制字符
- 13. 如何从utf8字符串中获取字符
- 14. 如何从utf8字符串中获取等效的非utf8字符?
- 15. 使用Wireshark的UTF8字符
- 16. 如何在字符串文字中使用字符串插值?
- 17. 使用字符串方法格式()从字符串
- 18. 无法在字符串上使用simplejson.loads()
- 19. 使用utf8字符替换内部字符串后无法写入rtf文件
- 20. 如何在iPhone上使用JSON解码UTF8字符?
- 21. HTTP头上的UTF8字符
- 22. 将字节[]转换为UTF8字符串
- 23. UTF8字节到字符串和Winsock GetStream
- 24. 在Haskell中,如何获得UTF8字符串中的字节数?
- 25. 如何在Oracle中使用regex_replace方法在特定字符串上添加字符串
- 26. 使用UTF8文字字符xcode ENUM
- 27. 使用Subsonic.Select()方法ExecuteTypedList用字符串
- 28. 调用使用字符串的方法
- 29. 我该如何使用NSArray的UTF8字符串
- 30. 将UTF8字符串编码为ISO-8859-1字符串(VB.NET)
如果你使用1.8或1.9,请告诉我们,行为显著在1.9与关于编码处理改变。在1.8字符串是字节数组,在1.9它们是字符数组。 – Theo 2010-12-11 20:33:22