kako najti stavke v tekstu?

Odpiranje, tiskanje, pisanje v datoteke in drugo.
vetta
Prispevkov: 89
Pridružen: 08.11.2004 14:57:09

kako najti stavke v tekstu?

Odgovor Napisal/-a vetta » 10.11.2005 20:40:41

Živjo!

No spet mam en problem ki ne vem kako bi se ga lotu! Imam recimo eno *.txt datoteko, v kateri imam text razdeljen po odstavkih. Rad bi naredil proceduro, ki bo ta tekst razdelila lepo po stavkih v eno drugo datoteko. Pa računat je treba še na to, da je stavek lahko v dveh ali treh vrsticah in se konča z piko, vprašajem ali klicajem.

Če bo kdo kako idejo bi bila zelo dobrodošla!

LP Simon
http://moja-tinta.com/

mwore
Prispevkov: 97
Pridružen: 01.07.2001 23:25:08

kako najti stavke v tekstu?

Odgovor Napisal/-a mwore » 10.11.2005 21:19:12

Začneš brati datoteko od začetka (po znakih) in ko prideš do končnega ločila, se v datoteki v katero vpisuješ stavke preseliš v novo vrstico.
To ponavljaš do konca.

Btw:
Ko med branjem datoteke prideš na znak za novo vrsto ga zamenjas s predsledkom.

Lp, :)
Zadnjič spremenil mwore, dne 10.11.2005 21:22:00, skupaj popravljeno 1 krat.

matej
Prispevkov: 1837
Pridružen: 03.01.2002 20:40:38

kako najti stavke v tekstu?

Odgovor Napisal/-a matej » 11.11.2005 10:07:00

Probleme imaš lahko pri tem, da se pika lahko pojavi tudi znotraj stavka - torej pika nujne ne pomeni zaključka stavka. Če želiš stvar "dobro" izpeljat, boš moral kar nekaj logike vgradit.

matej

barE-5
Prispevkov: 135
Pridružen: 01.02.2005 09:37:12

kako najti stavke v tekstu?

Odgovor Napisal/-a barE-5 » 11.11.2005 10:10:30

Kar je napisal mwore dobro velja za večino primerov.
Nočem ti vzeti volje, ampak na splošno je delo z običajnimi besedili zelo zoprno zaradi kupa posebnih primerov in "literatnih elementov".
Težave ti bo delalo, da se lahko stavek konča s tremi pikami, dvema ali več drugimi ločil (npr. Auuu!!). in da se pika ne uporablja samo kot končno ločilo (npr 1.). Stavek je lahko zelo dolg, tako da bi ga bilo morda po kakih 10 vrsticah vseeno dobro deliti v več vrst.

LP

P.S.

Matej me je malo prehitel.
Zadnjič spremenil barE-5, dne 11.11.2005 10:12:11, skupaj popravljeno 1 krat.
Ko veš več, misliš, da veš manj kot prej.

vetta
Prispevkov: 89
Pridružen: 08.11.2004 14:57:09

kako najti stavke v tekstu?

Odgovor Napisal/-a vetta » 11.11.2005 20:08:04

Hmm..., ma kdo kako idejo kako bi se tega lotil?
http://moja-tinta.com/

barE-5
Prispevkov: 135
Pridružen: 01.02.2005 09:37:12

kako najti stavke v tekstu?

Odgovor Napisal/-a barE-5 » 12.11.2005 10:48:09

Ti je že mwore zapisal rešitev, se boš pa moral sprijazniti s tem, da problema nikakor ne boš mogel rešiti brez napak. Podoben problem je tudi samodejno popravljanje velike začetnice v Wordu, pa problema še niso rešili. Potem pa so še primeri, ko je potrebno pisati v novo vrsto, ko ni ločila: pri naštevanju po točkah in v pesmih.

LP
Ko veš več, misliš, da veš manj kot prej.

vetta
Prispevkov: 89
Pridružen: 08.11.2004 14:57:09

kako najti stavke v tekstu?

Odgovor Napisal/-a vetta » 13.11.2005 15:08:38

Hmm..., Kako pa nej bi zgledal branje datoteke po znakih? No jst sm se cele stvari lotil takole... Fajl sem naložil v TStringList - o in sm si zamislil, da bi najprej zamenjal oznako, ki določuje iti v novo vrstico (kukr vem je ta ukaz \n ?) in sm lepo reku StringReplace in mi stvar ne dela. Mal pomoči bi mi prišlo prav ;)

Hvala!
http://moja-tinta.com/

romano
Prispevkov: 126
Pridružen: 25.06.2005 15:13:29

kako najti stavke v tekstu?

Odgovor Napisal/-a romano » 13.11.2005 15:55:54

Hmm..., Kako pa nej bi zgledal branje datoteke po znakih? No jst sm se cele stvari lotil takole... Fajl sem naložil v TStringList - o in sm si zamislil, da bi najprej zamenjal oznako, ki določuje iti v novo vrstico (kukr vem je ta ukaz n ?) in sm lepo reku StringReplace in mi stvar ne dela. Mal pomoči bi mi prišlo prav ;)
Za prehod v novo vrstico se v tekstovni datoteki uporabljati ASCII kodi #13 in #10. Ne spomnim se katera je prva in katera druga, mislim pa da je tako in tako vseeno. Če se še prav spomnim, #13 pomeni prehod na začetek vrstice, #10 pa prehod v novo vrstico. Poskusi StringReplace(Besedilo, #13#10, ' ')

vetta
Prispevkov: 89
Pridružen: 08.11.2004 14:57:09

kako najti stavke v tekstu?

Odgovor Napisal/-a vetta » 13.11.2005 16:23:54

Huh...., Tole sm si pa zastavu projekt!! Sm zdele za foro tkole naredu... Naložu sm v TStringList in zamenjal vse nove vrstice (#13#10 - hvala Romano za pomoč ;) ). Nato sm tko na hitr lepo zamejal vse pike, vprašaje in klicaje z #13#10. Nakar sm hitro ugotovil probleme ;) Primer: Dr. (doktor) in potem ime z veliko začetnico - rešitev buhvje kakšna. Človk bi reku da bo kontroliru da je recimo za piko, klicajem ali vprašajem presldek in nato velka začetnica..., Se v temle primeru hitro izkaže da ne bo šlo tkole!! Ali pa kake krajšave.., NPR: U.S. Kje nej kle neko logiko naredim? Tole bi znal bit kar zanimivo ;) Če ma kdo kako idejo kar na plano ;)

LP Simon
Zadnjič spremenil vetta, dne 13.11.2005 16:24:44, skupaj popravljeno 1 krat.
http://moja-tinta.com/

mwore
Prispevkov: 97
Pridružen: 01.07.2001 23:25:08

kako najti stavke v tekstu?

Odgovor Napisal/-a mwore » 13.11.2005 18:34:25

Nekako poskusi med branjem in pisanjem imeti nekaj znakov zamika.
Tako boš lahko videl, kaj pomeni tista pika, ki si jo prebral.

Npr.:
U.S. - ker je takoj za piko velika začetnica lahko sklepaš, da velika začetnica ne pomeni novega stavka ker vmes ni presledka
Pri raznih nazivih Dr., Mag,... bi pa verjetno moral narediti neko bazo s katero lahko določiš kaj narediti v takem primeru.

Mislim, da (kot si seveda ze slišal) to ne bo enostavno realizirat (mogoče se ti pa trud kdaj poplača).

Lp, :)

Odgovori