[JS] Usuwanie polskich ogonków z ciągu znaków

Znaki diakrytyczne, czyli popularnie zwane ogonki są częstą zmorą programistów. Ą, ć, ś, ę, ł, Ó, Ź, itp. niestety dają o sobie znać w najgorszych momentach.

Co zrobić aby pozbyć się polskich znaków diakrytycznych z ciągu znaków? Podmienić je na polskie odpowiedniki. Oto przykładowe rozwiązanie:

String.prototype.escapeDiacritics = function()
{
    return this.replace(/ą/g, 'a').replace(/Ą/g, 'A')
        .replace(/ć/g, 'c').replace(/Ć/g, 'C')
        .replace(/ę/g, 'e').replace(/Ę/g, 'E')
        .replace(/ł/g, 'l').replace(/Ł/g, 'L')
        .replace(/ń/g, 'n').replace(/Ń/g, 'N')
        .replace(/ó/g, 'o').replace(/Ó/g, 'O')
        .replace(/ś/g, 's').replace(/Ś/g, 'S')
        .replace(/ż/g, 'z').replace(/Ż/g, 'Z')
        .replace(/ź/g, 'z').replace(/Ź/g, 'Z');
}
// przykładowe wykorzystanie:
var test = new String("ąźĘŹĆŚół");
alert(test.escapeDiacritics());

Wykorzystałem tu mechanizm prototypów, dzięki czemu każdy ciąg znaków w Twoich skryptach, po dodaniu powyższego kodu będzie „widział” nową metodę. Poczytaj o rozszerzaniu obiektu.

Ogonkowy usuwacz online

Przykładowe zastosowanie powyższego kodu:


Miłej zabawy z kodem 🙂

Warto przeczytać:

8 komentarzy

  1. na stronie:
    http://yarpo.pl/download/examples/ogonki-porownanie

    umieściłem skrypt porównujący nasze rozwiązania.
    Przy wykorzystaniu Twojej funkcji:
    function ( c )
    {
    if (c in reps)
    {
    return reps[c];
    }
    return ”;
    }
    wyniki jakie średnio otrzymywałem można uznać 13/18 na korzyść Twojego rozwiązania.

    gdy lekko stunningowałem Twoją funkcję:
    function ( c )
    {
    return reps[c] || ”;
    }

    wyniki poprawiły się do ok 10/18, ocierając się chwilami nawet o 50%.

    testowane na FF 6, windows XP.

  2. O – dzięki za poprawkę. Powinienem to tak zrobić z początku.

    BTW. widziałem, że używasz yProfilera. Nie wiem jak działa, ale ostatnio nabrałem wątpliwości co do poprawności wielu testów. Trafiłem na kilka przypadków, które w zależności jak się je testowało dawały inne rezultaty.

    Choć w tym konkretnym przypadku nie powinno mieć to znaczenia.

  3. Cześć rzeczywiście fajny scrypt czy mógłbyś go trochę stuningowac by jego efektem była fraza z zamienionymi ogonami na normalny tekst który mogę umieścić w dowolnym miejscu strony czy tez wstawić w link

    1. Nie mam nic przeciwko temu, abyś pobrał kod dostępny na tej stronie i zrobił z nim cokolwiek chcesz 🙂

      Przyznam, że niezbyt rozumiem jak dokładnie miałoby działać to, co proponujesz 🙂

  4. Chciałbym zmienić w URL generowanym przez cms fraze na nie zawierającą polskich znaków czyli niestety łatwa funkcja php nie wchodzi w grę kod wyrzucany przez php jest zbudowany poprawnie ale zawiera polskie znaki

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

WordPress spam zablokowany CleanTalk.