Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Neaktivní uživatel: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
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger: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
You are the greatest project you will ever work on.
Avatar
Odpovídá na David Hartinger
Neaktivní uživatel: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
Neaktivní uživatelský účet
Avatar
coells
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
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 Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger: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
You are the greatest project you will ever work on.
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.