0

以下を含むがこれらに限定されない、ユーザー入力のさまざまなWordの「スマート」文字をクリーンアップする必要があります。

– EN DASH
‘ LEFT SINGLE QUOTATION MARK
’ RIGHT SINGLE QUOTATION MARK

これらをASCII(ほぼ)同等のものにマッピングするためのRuby関数またはライブラリはありますか、それとも本当にたくさんの手動gsubを実行する必要がありますか?

4

2 に答える 2

2

HTMLEntities gemは、エンティティをUTF-8にデコードします

iconvを使用して、最も近いASCIIの同等物または単純なgsubまたはtr呼び出しに音訳することができます。James Greyは、音訳の方法を示すさまざまな文字セット間の変換に関するブログをいくつか持っています。

require 'htmlentities'

chars = [
  '–', # EN DASH
  '‘', # LEFT SINGLE QUOTATION MARK
  '’'  # RIGHT SINGLE QUOTATION MARK
]

decoder = HTMLEntities.new('expanded')
chars.each do |c|
  puts "#{ c } => #{ decoder.decode(c) } => #{ decoder.decode(c).tr('–‘’', "-'")} => #{ decoder.decode(c).encoding }"
end

# >> – => – => - => UTF-8
# >> ‘ => ‘ => ' => UTF-8
# >> ’ => ’ => ' => UTF-8
于 2011-03-03T05:22:50.837 に答える
0

一部のgsubは、特に、基本的に同じことを行うために追加のライブラリ全体をロードすることを計画している場合は、最善の策のように聞こえます。

于 2010-09-30T01:32:40.467 に答える