NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
jenda
Člen
Avatar
jenda:27.1.2016 8:31

Můžete mi prosím poradit, jak mám pole stringů setřídit podle maďarské abecedy? Jde o to, že maďarština, podobně jako čeština, obsahuje vícepísmenné znaky, které patří v abecedě jinam, než pokud by šlo o jednopísemné znaky. Je to analogie s českým CH, které se v české abecedě řadí za H, protože jde o vícepísemný znak. Pokud bychom ho řadili jako jednopísemný znak, byl by zahrnut do C. Maďarština má takovýchto znaků podstatně více.

 
Odpovědět
27.1.2016 8:31
Avatar
Luboš Běhounek Satik:27.1.2016 8:54

Nějak takhle :)

CultureInfo culture = new CultureInfo("hu-HU");
var result = myList.OrderByDescending(x =>
               x, StringComparer.Create(culture, false));
Editováno 27.1.2016 8:56
Nahoru Odpovědět
27.1.2016 8:54
https://www.facebook.com/peasantsandcastles/
Avatar
jenda
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
jenda:27.1.2016 9:04

Moc děkuji za odpověď. Omlouvám se za nepřesnost v otázce - pole má tři položky (madarsky, vyslovnost, cesky) a řadím to v tuto chvíli takto:

Array.Sort(vysledek, delegate(Slovnik vysledek1, Slovnik vysledek2)
            {
                return vysledek1.madarsky.CompareTo(vysledek2.madarsky);
            });

Mohu na to aplikovat to, co jsi mi napsal?

Děkuji

 
Nahoru Odpovědět
27.1.2016 9:04
Avatar
Luboš Běhounek Satik:27.1.2016 10:06

Tam je hlavní jen na to porovnání stringů použít ten StringComparer s maďarským cultureinfo.

Jinak kvůli rychlosti bych to nevytvářel uvnitř toho delegáta pokaždý znova, ale měl to už vytvořený někde bokem, možná na to udělal vlastní třídu

Nahoru Odpovědět
27.1.2016 10:06
https://www.facebook.com/peasantsandcastles/
Avatar
jenda
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
jenda:27.1.2016 10:25

Můžete mi to prosím víc vysvětlit? Na rychlosti mi nezáleží, klidně to může třídit několik hodin. Mohu to tedy použít do toho svého třídění? Jak? Omlouvám se, nejsem příliš pokročilý v programování. Děkuji za ochotu

 
Nahoru Odpovědět
27.1.2016 10:25
Avatar
Luboš Běhounek Satik:27.1.2016 10:51

Místo

return vysledek1.madarsky.CompareTo(vysledek2.madarsky);

vrátíš

CultureInfo culture = new CultureInfo("hu-HU");
return StringComparer.Create(culture, false).Compare(vysledek1.madarsky, vysledek2.madarsky);
Nahoru Odpovědět
27.1.2016 10:51
https://www.facebook.com/peasantsandcastles/
Avatar
jenda
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
jenda:27.1.2016 11:29

Děkuji moc, funguje to bezvadně. Paráda. Obdivuji, jak tohle všechno může někdo umět.

Ještě jeden doplňující dotaz. Na stránce https://msdn.microsoft.com/…vs.100).aspx jsem si našel, že pro maďarštinu existují dva druhy řazení. Bylo by možné to do toho nějak zakomponovat? Chtěl bych vyzkoušet to technické řazení, ona je maďarština v té abecedě hodně specifická.

Každopádně děkuji za pomoc, i takhle to funguje bezvadně.

 
Nahoru Odpovědět
27.1.2016 11:29
Avatar
Odpovídá na jenda
Luboš Běhounek Satik:27.1.2016 11:38

google, neznám to nazpaměť :)

jen se jinak vytvoří CultureInfo

např.

CultureInfo culture = new CultureInfo(0x0001040e, false);
Nahoru Odpovědět
27.1.2016 11:38
https://www.facebook.com/peasantsandcastles/
Avatar
jenda
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
jenda:27.1.2016 12:03

Díky moc, takhle to bude.

 
Nahoru Odpovědět
27.1.2016 12:03
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 9 zpráv z 9.