轨道上的红宝石 - 字符编码转换



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

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 ' '

相关内容

  • 没有找到相关文章

最新更新