Autor | Zpráva | ||
---|---|---|---|
truefriend-cz Profil |
Dobrý den. Chci do programu TheBat vytvořit/rozšířit šablonu pro oslovení jménem v 5. pádu. Jméno funguje, zbývá jen příjmení a trochu změnit formát zobrazení.
Způsob jakým bych to chtěl provést je, aby script dokázal určit/rozparsovat na "oslovení+jméno+příjmení" a pak s nimi dále pracovat. V současné verzi se jméno určuje podle koncovky jména. Problém je, že když ten stejnou koncovku bude mít i příjmení tak to určí to příjmení. Co se týká příjmení tak existuje v PHP někde na internetu (bohužel jsem ztratil seznam těch přípon z jaké na jakou se to převádí) rovnice jakým způsobem se dá zjednodušit přepis jmen z Novák na Nováku, Souček na Součku, apod. Nemusí se pak tam dávat všechna příjmení slovo od slova. Myslím si, že by TheBat na úrovni RegEx s tak velkou databází ani nedovedl pracovat. Dále aby pokud nenajde jméno v databázi tak aby dovedl správně umístit čárku v oslovení. Když je "Pan David Novák" a oslovení je "Dobrý den Davide," a jméno by to nenašlo tak by se pak ukázalo jen "Dobrý den ," (zůstala by za "Dobrý den" a mezí čárkou nežádoucí mezera). V konečném důsledku by script měl umět převádět jména a jejich tvar takto: 1. Odesílatel: "Pan David Novák" Odpověď: "Dobrý den Davide Nováku," 2. Odesílatel: "David Novák" Odpověď: "Dobrý den Davide Nováku," 3. Odesílatel: "Novák David" Odpověď: "Dobrý den Davide Nováku," 4. Odesílatel: "David" Odpověď: "Dobrý den Davide," 5. V případě, že jméno neexistuje/není rozpoznáno (ale příjmení ano) (Odesílatel: "Novák") tak: Odpověď: "Dobrý den pane Nováku," pokud je to žena tak: Odpověď: "Dobrý den paní Nováková," 6. V případě, že jméno ani příjmení neexistuje/není rozpoznáno tak: Odpověď: "Dobrý den," Z toho co vím, tak příjmení a asi i jména se dají rozdělit na základ a koncovku (např.: Lu-děk) a pak pracovat pouze s koncovkami, které změní oslovení (např.: Lu-ďku). Od případného pomocníka bych požadoval: 1. aby mi pomohl s vyhledáním převodní tabulky pro česká případně i slovenská jména a příjmení 2. najít způsob jak vhodně rozparsovat/identifikovat "Oslovení", "Jméno", "Příjmení" a ty pak spojit dle uvedených tvarů ještě s tím, že je rozdělit do skupin například že koncovky žen jsou "paní" a koncovky mužů jsou "pan" a ty pak použít v odpovědích, mělo by to jít přes RegEx v čemž nejsem až tak dobrý, umím rozparsovat části slov ale neumím rozparsovat celá slova ve větě pomocí třeba mezer okolo, aj. Dokumentaci ohledně Maker a Šablon v TheBat najdete zde: www.ritlabs.com/en/support/help/73 Poznámka: Scripty zatím obsahují jen pár jmen/definic pro testování. Verze 1 (funkční), vychází z jednoduchého (a v případě doplnění všech jmen a příjmení hodně obsáhlého) přepsání jména jedna ku jedné dle databáze oddělené znakem "|" a zobrazit ho v 5.pádě: %_Result=''%- %_Result='%SetPattRegExp="Petr|Pavel|David|Lukáš|Karel|Honza|Řízek|Marek,"%RegExpMatch(%OFROMNAME)'%- %IF:"%_Result"='David':%_Result="Davide"%- %IF:"%_Result"='Lukáš':%_Result="Lukáši"%- %IF:"%_Result"='':%_Name="%OFROMNAME":%_Name="%_Result"%- %_Name%- Verze 2 (funkční), ReGex ze spojení "Pan David Novák" dokáže dle "databáze" koncovky slova "David" ("id") určit jméno a odstranit "Pan " a " Novák" a zobrazit ho v pátém pádě. %_SourceName='Pan David Novák'%- echo source name: %_SourceName%- %SetPattRegExp='((\w*)(id|áš|děk|ter))+[ ]'%- %RegExpBlindMatch='%_SourceName'%- %_Result0=%SubPatt='1'%- %_Result1=%SubPatt='2'%- %_Result2=%SubPatt='3'%- echo R0: %_Result0 echo R1: %_Result1 echo R2: %_Result2%- %IF:"%_Result2"='id':%_Result="ide"%- %IF:"%_Result2"='áš':%_Result="áši"%- %IF:"%_Result2"='děk':%_Result="ďku"%- %IF:"%_Result2"='ter':%_Result="tere"%- %IF:"%_Result2"='':%_Name="%_SourceName":%_Name="%_Result1%-%_Result"%- echo Name: Dobrý den %_Name, Výstup: echo source name: Pan David Novák echo R0: David echo R1: Dav echo R2: id echo Name: Dobrý den Davide, |
||
Časová prodleva: 6 let
|
0