Aktuálně: Postihly zákazy tvou profesi? Poptávka po ajťácích prudce roste, využij slevové akce 80% výuky zdarma!
birthday
Avatar
Posix
Člen
Avatar
Posix:30.4.2014 9:59

Nějaký jednoduchý kód na odstranění diakritiky nejen pro český jazyk? Prostě chci dostat jen znaky anglické abecedy. Asi moc neumím hledat. Našel jsem jen tento kód, ale ten mi ve windows phonu jaksi nejde. Nenajde to funkci Normalize.

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();
}
Odpovědět
30.4.2014 9:59
Proč to dělat jednoduše, když to jde složitě.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Posix
David Čápka:30.4.2014 10:19

IMHO to máš nejlepší prostě replacovat, můžu ti poslat seznam těch znaků, který používám v PHP:

$charsFrom = 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝßàáâãäåçèéêëìíîïñòóôõöùúûüýÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ€£';
$charsTo = 'AAAAAACEEEEIIIINOOOOOUUUUYsaaaaaaceeeeiiiinooooouuuuyyAaAaAaCcCcCcCcDdDdEeEeEeEeEeGgGgGgGgHhHhIiIiIiIiIiIJijJjKkkLlLlLlLlLlNnNnNnNnNOoOoOoOEoeRrRrRrSsSsSsSsTtTtTtUuUuUuUuUuUuWwYyYZzZzZzsE';

Projet to cyklem a volat replace je už triviální.

Nahoru Odpovědět
30.4.2014 10:19
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Posix
Člen
Avatar
Odpovídá na David Čápka
Posix:30.4.2014 11:33

Ok dik. Zajimalo by me ale, jak to mam resit, kdyz ty pole retezcu from a to nejsou stejne dlouhe, tak jak mam vedet co cim nahradit? :D

Nahoru Odpovědět
30.4.2014 11:33
Proč to dělat jednoduše, když to jde složitě.
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
coells
Redaktor
Avatar
Odpovídá na Posix
coells:30.4.2014 11:57

Ten tvůj kód převede string do dekomponovaného unicodu, což je korektní na .NET frameworku. Podle všeho to ale WP nepodporuje a nejlepší způsob je ruční odstranění, viz http://invokeit.wordpress.com/…s-phone-7-x/

 
Nahoru Odpovědět
30.4.2014 11:57
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Posix
David Čápka:30.4.2014 12:06

Sry, vlezly mi tam nějaký dvojznaky :D Teď jsou stejný:

        'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝßàáâãäåçèéêëìíîïñòóôõöùúûüýÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ';
'AAAAAACEEEEIIIINOOOOOUUUUYsaaaaaaceeeeiiiinooooouuuuyyAaAaAaCcCcCcCcDdDdEeEeEeEeEeGgGgGgGgHhHhIiIiIiIiIiKkkLlLlLlLlLlNnNnNnNnNOoOoOoRrRrRrSsSsSsSsTtTtTtUuUuUuUuUuUuWwYyYZzZzZzs';

Ty dvojznaky se musí pak udělat např. nějakým polem, ale žádný mě blízký jazyk je nepoužívá, takže jsem je neřešil.

Editováno 30.4.2014 12:09
Nahoru Odpovědět
30.4.2014 12:06
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.