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

ASCIIで返ってくるL\xE4n\xF6dm\xE5tn\xD6ng \xC5j\xE4d\xE5rb\xC4nのですが、英語に変換したいです。

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 に答える