0

我有一个包含瑞典语字符的字符串,并希望将其转换为基本英语。

name = "LänödmåtnÖng ÅjädårbÄn" 

这些字符应按如下方式转换:

  • Å采用A
  • å采用a
  • Ä采用A
  • ä采用a
  • Ö采用O
  • ö采用o

有没有简单的方法来做到这一点?如果我尝试:

ascii_to_string = name.unpack("U*").map{|s|s.chr}.join

L\xE4n\xF6dm\xE5tn\xD6ng \xC5j\xE4d\xE5rb\xC4n以 ASCII 形式返回,但我想将其转换为英文。

4

3 回答 3

3

使用 OP 的转换表作为tr方法的输入:

#encoding: utf-8
name = "LänödmåtnÖng ÅjädårbÄn" 
p name.tr("ÅåÄäÖö", "AaAaOo") #=> "LanodmatnOng AjadarbAn"
于 2013-01-30T14:21:59.763 回答
1

试试这个:

string.mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/n,'').downcase.to_s

正如在这篇文章中发现的那样。

于 2013-01-30T13:42:13.183 回答
1

您已经得到了不错的答案,但是有一种更容易记住的方法(没有神奇的正则表达式):

name.parameterize

它将空格更改为破折号,因此您需要以某种方式处理它,例如通过分别处理每个单词:

name.split.map { |s| s.parameterize }.join ' '
于 2013-01-30T13:54:24.930 回答