Konwertowanie do ASCII

Hej, czy znacie może jakiś ładny sposób na zamianę znaków w stringach, tak aby rezultat zawierał tylko znak ASCII a wyglądał podobnie np

“żółw Ø ü” => “zolw O u”

Dla polskich znaków wystarczy mi to:

def escape_tails
    chars = ["ą","Ą","ę","Ę","ó","Ó","ł","Ł","ń","Ń","ś","Ś","ć","Ć","ź","Ź","ż","Ż"]
    ascii = ["a","A","e","E","o","O","l","L","n","N","s","S","c","C","z","Z","z","Z"]
    chars.each_with_index do |char, i|
      self.gsub!(chars[i], ascii[i])
    end
    self
  end

Ale z zagranicznymi w ten sposób nie chcę sie już bawić.

1 Like

nie używam, ale jest w activesupport metoda do tego

ActiveSupport::Inflector.transliterate

Dzięki, nie znałem transliterate w ActiveSupport.
Oba rozwiązania robią robote.

Najlepszym gemem do tego jaki znam to stringex https://github.com/rsl/stringex

Niesamowicie sięsprawdzał mi dotychczas. Robi naprawdę cudne żeczy typu

"tell your readers 你好".to_url => "tell-your-readers-ni-hao"
czy
"rock & roll".to_url => "rock-and-roll"

więc bardzo rozbudowane rzeczy które normalnie bardzo cięzko przewidzieć.