Jak odstranit diakritiku z řetězce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak odstranit diakritiku z řetězceJak odstranit diakritiku z řetězce

 
Hledat
Moderní platforma pro vytvoření vašeho nového webu – Wix.com.
Nyní už můžete mít web zdarma.
Vybavení pro Laser Game
Spuštěn Filmový magazín

Jak odstranit diakritiku z řetězce

Google       Google       3. 7. 2006       21 814×

Občas nastane situace, kdy je nutné odstranit z řetězce znaky s diakritikou. .NET 2.0 nabízí spolehlivé řešení problému, protože umí pracovat s takzvanými Unicode kategoriemi.

Reklama
Reklama

Občas se stává, že je nutné z nějakého textu odstranit znaky s diakritikou. Většinou není požadováno jejich úplné odstranění, ale nahrazení za jejich ekvivalenty bez diakritiky, aby text zůstal čitelný. V .NET 2.0 je řešení celého problému snadnější, než se může zdát.

Ve starších verzích .NET by bylo nutné vytvořit seznam písmen s diakritikou a k nim přiřadit jejich ekvivalenty. Následně by pak docházelo k postupnému nahrazování písmen v textu, ale toto řešení není příliš spolehlivé, protože většinou nevytvoříte kompletní seznam všech existujících znaků s diakritikou. V .NET 2.0 je naštěstí možné pracovat s tzv. Unicode kategoriemi.

S pomocí níže uvedené metody se oddělí znak od jeho modifikátoru, zkontrolují se všechny znaky a ze znaků, které nejsou modifikátory, se sestaví nový řetězec. Nebudu vysvětlovat, co znamenají všechny modifikátory metod, návratový typ a další klíčová slova – to je úkolem lektora zdejšího kurzu jazyka C#.


public static string RemoveDiacritics(String s)
{
    // oddělení znaků od modifikátorů (háčků, čárek, atd.)
    s = s.Normalize(System.Text.NormalizationForm.FormD);
    System.Text.StringBuilder sb = new System.Text.StringBuilder();

    for (int i = 0; i < s.Length; i++)
    {
        // do řetězce přidá všechny znaky kromě modifikátorů
        if (System.Globalization.CharUnicodeInfo.GetUnicodeCategory(s[i]) != System.Globalization.UnicodeCategory.NonSpacingMark)
        {
             sb.Append(s[i]);
        }
    }

     // vrátí řetězec bez diakritiky
     return sb.ToString();
}

Metoda Normalize oddělí znaky od jejich modifikátorů. Následný cyklus projde všechny znaky a k řetězci připojí jen ty, které nejsou typu NonSpacingMark, což jsou právě zmiňované modifikátory. Samozřejmě je možné určit, jaké Unicode kategorie mají být odstraněny nebo zachovány.

Zdroj: http://www.msdn.com

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

1 názor  —  1 nový  
Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Dušan JanošíkDušan vyvíjí software a webové aplikace na platformě .NET. Je milovníkem neuznávaných teorií, a zajímá se o parapsychologii a teraristiku.
Web     Twitter     Facebook     LinkedIn    

Nové články

Reklama
Reklama
Obrázek ke článku NopCommerce – datová vrstva a přístup k datům – 2. díl

NopCommerce – datová vrstva a přístup k datům – 2. díl

V minulém článku jsme si představili platformu NopCommerce z globálního pohledu. V dnešním díle se již zaměříme na konkrétní část systému, a to datovou vrstvu. Představíme si základní stavební kameny systému v podobě doménových objektů. Ukážeme si, jakým způsobem rozšířit doménové objekty a jakým způsobem přistupuje NopCommerce k nastavení systému a modulů.

Obrázek ke článku Seznamte se s open source platformou NopCommerce – 1. díl

Seznamte se s open source platformou NopCommerce – 1. díl

Hledáte e-commerce řešení, které si dokážete přizpůsobit podle vašich požadavků? Chcete čistý a srozumitelný kód, se kterým bude radost pracovat? Prozkoumejte s námi možnosti open source projektu NopCommerce. Seriál programování pod NopCommerce vám pomůže překonat první kroky nejistoty a úspěšně zvládnout vývoj pod platformou NopCommerce.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý