Istnieje już bardzo similar question. Jednym z rozwiązań wykorzystuje kod jak ten:Usuwanie akcentów/znaków diakrytycznych z ciągu znaków przy zachowaniu innych znaków specjalnych (wypróbowano mb_chars.normalize i iconv)
string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n, '').to_s
który działa cuda, dopóki nie zauważy, że także usuwa spacje, kropki, kreski i kto wie co jeszcze.
Nie mam pewności, jak działa pierwszy kod, ale czy można go usunąć tylko pod kątem ? A może przynajmniej dostaniesz listę znaków do zachowania? Moja znajomość wyrażeń regularnych jest mały, ale próbowałem (bezskutecznie):
/[^\-x00-\x7F]/n # So it would leave the dash alone
mam zamiar zrobić coś takiego:
string.mb_chars.normalize(:kd).gsub('-', '__DASH__').gsub
(/[^x00-\x7F]/n, '').gsub('__DASH__', '-').to_s
okropna? Tak ...
Próbowałem również:
iconv = Iconv.new('UTF-8', 'US-ASCII//TRANSLIT') # Also tried ISO-8859-1
iconv.iconv 'Café' # Throws an error: Iconv::IllegalSequence: "é"
pomoc proszę?
Och, drogi panie ... proszę, wybacz mi :) Dzięki! – Ivan
Tak, wszyscy mieliśmy nużący ciężar debugowania zamieszania spowodowanego przez najprostsze literówki! – bobince
Co ze spacjami? nie zachowuje białych przestrzeni. –