javascript - Hogyan kezeljük programozottan az angol rövidítéseket [Regex, JS, Ruby]
Természetes nyelvű felhasználói bevitelről van szó, és ellenőriznem kell azt egy előre meghatározott „helyes” változattal szemben. Ez önmagában triviális, de bizonytalan vagyok abban, hogyan kezeljem az angol nyelvben előforduló összevonások változatait.
Tegyük fel, hogy a Biztos vagyok benne, hogy nem tudod, mit csinálsz. mondatra számítok. Az egyezésnek pontosnak kell lennie, de nem akarom a felhasználókat egyetlen változatra korlátozni, mert az gyorsan frusztrálóvá válna.
Szóval, manuálisan kellene beírnom a mondat minden lehetséges változatát érvényes egyezésként? Így:
"I'm positive you don't know what you're doing."
"I am positive you don't know what you're doing."
"I am positive you do not know what you're doing."
"I am positive you do not know what you are doing."
"I'm positive you don't know what you are doing."
...
Stb., stb. Gondolj bonyolultabb mondatokra, és láthatod, milyen őrjítővé válik ez.
Vagy van valamilyen programozott mód, amivel ezt kezelni tudnám? Regex-szel, JS-sel, Rubival vagy Rails-sel (az eszközökkel, amiket használok)?
Bármilyen segítséget értékelek, köszönöm.
Válasz #1
Nem lehet olyan sok angol rövidítés. Minden változatot úgy tárolnék, mint egy kulcsot, amely ugyanarra az értékre mutat, például (pszeudo Ruby-stílusban, de természetesen JS-sel is meg lehetne csinálni)
"aren't" => :arent
"are not" => :arent
etc.
Ezután tárold a helyes mondatot a megosztott értékek felhasználásával.
":im positive you :dont know what :youre doing"
Amikor kapsz egy bemenetet, cseréld le a megtalált kulcsokat a tárolt értékükre, majd ellenőrizd az átalakított mondatot a helyes mondattal szemben, amelyet a külön jelölt összevonásokkal tároltak.
(Megjegyzés: a néhány esetben, amikor egyes kifejezésekre azonos rövidítésekkel külön-külön szeretnél válaszolni, tegyél külön intézkedéseket.)
