我有一个包含瑞典字符的字符串,并希望将其转换为基本英语。
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
它以 ASCII 形式返回LxE4nxF6dmxE5tnxD6ng xC5jxE4dxE5rbxC4n
,但我想将其转换为英语。
使用 OP 的转换表作为 tr
方法的输入:
#encoding: utf-8
name = "LänödmåtnÖng ÅjädårbÄn"
p name.tr("ÅåÄäÖö", "AaAaOo") #=> "LanodmatnOng AjadarbAn"
试试这个:
string.mb_chars.normalize(:kd).gsub(/[^x00-x7F]/n,'').downcase.to_s
正如这篇文章中发现的。
你已经得到了不错的答案,但是有一种方法更容易记住(没有神奇的正则表达式):
name.parameterize
它将空格更改为破折号,因此您需要以某种方式处理它,例如通过单独处理每个单词:
name.split.map { |s| s.parameterize }.join ' '