Diakritika   otázka

VB.NET

Dobrý den, dá se nějakým způsobem přiřadit diakritický znak k písmenu? Např "ˇ" & "n" = "ň". Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

každý znak má vlastní kód, tedy A, má jiný než-li Á. Z tohoto důvodu není nic jako "přidat křížek". Nelze ani nějak jednoduše vzít slov "kolobezka" a říct stroji, přidej diakritiku, neví totiž že se jedná o nějaké slovo koloběžka.

Co přesně potřebujete? Pokud jen nějak strojově udělat char('a').nastavCarku(); tak to samozřejmě napsat jde. Pokud ale chcete napsat nějakou efektivní funkcionalitu, které hodíte text bez diakritiky a on bude mít za úkol to doplnit, jednoduché to nebude. Budete muset sehnat nějaký slovník a vůči tomu to porovnávat.

K tomuto se vám bude hodit struktura TRIE a třeba algoritmus Aho-corasick, který při nalezení slova tu diakritiku přidá.

MB

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dobrý den, díky za odpověď. Potřebuju toto: Mám řetězec např. "ffdfˇn" a z něj potřebuji mít "ffdfň". Prostě vzít ten diakritický symbol a posadit ho na následující písmenko. Nechci to řešit hromadou podmínek a všude jsem našel jen možnosti jak diakritiku odstranit.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Hezký den,

já bych to právě řešil smečkou if(ů) nebo switchem. Písmen v ČJ s háčkem je 8 a s čárkou 6 , čili to je nějakých 28 podmínek, když počítám ještě velká a malá. Pokud to hezky obalíte do metod nebo tříd, tak to nebude taková hrůza.

PS: samozřejmě za předpokladu, že to chcete dělat jen pro české znaky

R.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

PS: S čárkou je 7 znaků, s háčkem 8.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Hmm, to by mě zajímal ten sedmý znak (kromě á, é, í, ó, ú, ý) ... Každopádně jsem tím chtěl jen demonstrovat to, že těch podmínek nebude tak moc :)

R.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tipuji, že 7. znakem byl myšlen znak "ů"

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A já tipuju, že 8.znakem byl myšlen "ỹ" :-D

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud by vám ify nebo dictionary charů připadaly moc jednoduché, nebo to potřebujete mít moc univerzální, tak by to asi šlo udělat pomocí unicodových speciálních znaků pro diakritiku. https://en.wikipedia.org/wiki/Combining_...

Fungují tak, že když je čtecí zařízení najde třeba U+030C, tak doplní háček na předchozím písmenku. Takže potřebujete normální háček vyměnit za tento speciální znak a dát ho za písmenko. Pak by ještě chtělo na tom stringu provést normalizaci, aby se to převedlo na normální znaky.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback