关于ruby:重音字符的upcase和downcase

upcase and downcase for accented characters

本问题已经有最佳答案,请猛点这里访问。

我是一个初学者,正在开发一个简单的Ruby程序来从文本文件生成词汇表。西班牙语允许单词在大写的第一个字母(例如"baco")上带有重音标记,但我希望列表中的所有单词都是小写的。现在,如果我尝试"á".downcase,控制台返回"_"。

有没有一种方法可以在Ruby中使用upcase&downcase,并在西班牙语中使用重音字符(__?)?

这就是我的程序目前的样子:

1
2
3
4
5
6
7
8
9
f = File.open(".../cat.txt")
words = f.read.split.map(&:downcase)
f.close
words = words.map {|item| item.gsub(/[,.?!-"'"]/, '')}
words = words.uniq.sort

File.open(".../catwords.txt","w+") do |f|
  words.each { |element| f.puts(element) }
end


您需要一个库来理解诸如排序和转换之类的特定于语言的规则。https://github.com/jchris/icu4r可能是最主要的一个,但是如果你到处搜索EDOCX1(这类东西的标准项目),你会发现类似的东西。


看看这个示例代码

1
our_string.tr('á', 'á')

根据文件:

(from ruby site)
------------------------------------------------------------------------------ str.tr(from_str, to_str) => new_str

Returns a copy of str with the characters in from_str replaced by the
corresponding characters in to_str. If to_str is shorter than
from_str, it is padded with its last character in order to maintain
the correspondence.

"hello".tr('el', 'ip') #=>"hippo"

```