ReplaceSpecialCharactersLibrary – knižnica na odstránenie diakritiky zo stringu

Keďže som potreboval na jednom menšom projekte funkciu ktorá by sa hodila pre vytvorenie peknej URL z bežného názvu článku, rozhodol som sa túto už mnohokrát riešenú funkcionalitu zabaliť do jednej triedy, urobiť pár unit testov a hodiť na GitHub. Možností implementovať bolo viac, od Regexu, cez StringBuilder a nejaký vlastný zoznam znakov ktoré chceme nahradiť až po string.Normalize, ktorý som nakoniec použil, teda ehm našiel na webe. Celý projekt nájdete na tomto odkaze :

https://github.com/rostacik/ReplaceSpecialCharactersLibrary

Btw pri hľadaní som narazil na jeden celkom zaujímavý kus kódu, nech sa páči :

http://mynthon.net/howto/-/strip-accents-romove-national-characters-replace-diacritic-chars.txt

PS: viem, že je to absolútna blbôstka, ale poštval som na to PEX, urobil som pár sample testov a na NuGet to dávať samozrejme nebudem, je to vlastne len snippet, ale možno sa vám zíde, že stačí pridať referenciu a proste to funguje (teda dúfam 🙂 ). Ak niečo, píšte do komentov, rád podiskutujem ak som niečo urobil zle.

EDIT : Pridal som na základe chalanov z vyvojari.sk ešte rozšírenie o extension metódy a ich testy, takže stačí include knižnicu a použiť namespace a môžete si vybrať, či budete používať inštanciu triedy, alebo extension metódu na akomkoľvek string-u. Enjoy.

5 thoughts on “ReplaceSpecialCharactersLibrary – knižnica na odstránenie diakritiky zo stringu

  1. Ahoj.
    No dobrá otázka. Napr. preto, ak by som dostal ako vstupný parameter null, čo pri stringu môžem, tak ak potom nad null zavolám napr .Trim, tak dostanem NullReferenceException. Kedže sa za to čo dostanem z cudzieho kódu, ktorý bude volať mňa nemôžem zaručiť, musím počítať so všetkým.
    Zaujímavé info nájdeš o tomto napr aj tu :
    http://msdn.microsoft.com/en-us/library/ms228362.aspx alebo tu
    http://stackoverflow.com/questions/1069155/is-string-a-value-type-or-a-reference-type alebo tu
    http://csharpindepth.com/Articles/General/strings.aspx

    String je v .NETe reference type a preto ukazuje niekam, je to pointer a teda null je validná hodnota. Spadne ti to potom až za behu. Ja sa snažím vždy string inicializovať string.Empty a potom vo svojom kóde už null mať nemôžem.

    Hádam nekecám 🙂

    Iná otázka? 🙂

  2. Ahoj Dusan,
    ved ale na to je prave methoda
    string.IsNullOrWhiteSpace , ktora ti skontroluje ci value nie je al null.

    ved to ma aj v nazve:)

  3. Áno páni, máte pravdu, ten prvý check na null je tam vlastne zbytočný, vďaka za upozornenie, opravím a zaverzujem :))) Nepochopil som celkom tvoju otázku foobar , sry 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *