kako najti stavke v tekstu?

Odpiranje, tiskanje, pisanje v datoteke in drugo.
barE-5
Prispevkov: 135
Pridružen: 01.02.2005 09:37:12

kako najti stavke v tekstu?

Odgovor Napisal/-a barE-5 » 14.11.2005 10:55:45

Med besedami je dobro imeti zaradi lažje obravnave naprej natančno 1 presledek.

Če je za piko kar koli razen presledka, ni novega stavka.
Če je za piko presledek in naslednji znak ni velika črka, ni novega stavka.
Če je za piko presledek in je naslednji znak velika črka, je nov stavek, razen, če ta velika črka ne pomeni začetka lastnega imena.
Za okrajšavami nazivov (dr., mag.,...) je lastno ime, vendar taka beseda lahko pomeni tudi kaj drugega (npr. mag, ga...). Zdi se, da je enak problem tudi za vrstilnimi števniki.

Pa poglej si še premi govor.

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 » 14.11.2005 12:23:29

Koda: Izberi vse

procedure TForm1.Start_ButtonClick(Sender: TObject);
var
  Fajl : TStringList;

begin
  OpenDialog1.Execute;
  Fajl := TStringList.Create;
  if FileExists(OpenDialog1.FileName) then begin
    Fajl.LoadFromFile(OpenDialog1.FileName);
    Fajl.Text := StringReplace(Fajl.Text, #13#10, '', [rfReplaceAll]);
    Fajl.Text := StringReplace(Fajl.Text, '.', #13#10, [rfReplaceAll]);
    Fajl.Text := StringReplace(Fajl.Text, '!', #13#10, [rfReplaceAll]);
    Fajl.Text := StringReplace(Fajl.Text, '?', #13#10, [rfReplaceAll]);
    Fajl.SaveToFile('c:\xy.txt');
    Fajl.Destroy;
  end;
end;
No tole je blo tkole na brzaka skupi narejen... Da še kr zadovoljive rezultate, vendar vem da to ni to. Zdele sem po forumu ceu cajt isku, kako bi naredu findfirst, findnext in vse kar sem našel je bilo za primer fajlov v direktorijih. Kako bi pa to izvedu za primer teksta? Recimo bi reku: najdi piko, poglej na kerem mestu je, poglej kaj je naslednji znak (kako bi recimo vedu al je naslednji znak velika oz mala črka oz cifra??) in potem naredil ustrezne ukrepe glede na najdeno.
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 » 14.11.2005 13:31:49

Svetujem ti, da stavke, kot je naslednji
Fajl.Text := StringReplace(Fajl.Text, '?', #13#10, [rfReplaceAll]);
zamenjaš s stavki, kot je

Koda: Izberi vse

Fajl.Text := StringReplace(Fajl.Text, '?', '?'+#13#10, [rfReplaceAll]);
saj boš sicer zbrisal ločila.
Do i-tega znaka v besedilu pa dostopaš takole: Fajl.Text
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 » 14.11.2005 13:40:06

Hm..., ja..., Sam prvo morm najdt kje se nahaja recimo ločilo, da bom potem lohka gledu kaj je naslednji znak..., Zato sm pa reku kako bi recimo izvedu funkcijo (al pa če kej drucga obstaja) findfirst, findnext še na TStringList
http://moja-tinta.com/

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

kako najti stavke v tekstu?

Odgovor Napisal/-a romano » 14.11.2005 16:13:49

Hm..., ja..., Sam prvo morm najdt kje se nahaja recimo ločilo, da bom potem lohka gledu kaj je naslednji znak..., Zato sm pa reku kako bi recimo izvedu funkcijo (al pa če kej drucga obstaja) findfirst, findnext še na TStringList
Poglej funkciji Pos in Posex za iskanje določenih znakov v stringu.

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

kako najti stavke v tekstu?

Odgovor Napisal/-a vetta » 14.11.2005 16:26:01

Hm..., ja..., Sam prvo morm najdt kje se nahaja recimo ločilo, da bom potem lohka gledu kaj je naslednji znak..., Zato sm pa reku kako bi recimo izvedu funkcijo (al pa če kej drucga obstaja) findfirst, findnext še na TStringList
Poglej funkciji Pos in Posex za iskanje določenih znakov v stringu.
Hja..., problem pri tejle funkciji je sledeči..., vrne pozicijo prvega stringa..., ne zna vrnit pozicije vseh iskanih stringov, ki se nahajajo v iskanem stringu.
Zadnjič spremenil vetta, dne 14.11.2005 16:27:06, skupaj popravljeno 1 krat.
http://moja-tinta.com/

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

kako najti stavke v tekstu?

Odgovor Napisal/-a romano » 14.11.2005 16:46:08

Poglej funkciji Pos in Posex za iskanje določenih znakov v stringu.

Hja..., problem pri tejle funkciji je sledeči..., vrne pozicijo prvega stringa..., ne zna vrnit pozicije vseh iskanih stringov, ki se nahajajo v iskanem stringu.
Iskati in menjati boš moral v zanki, tukaj po mojem nimaš kaj dosti izbire - še posebej, ker potem moraš tako in tako preveriti kakšni so sosednji znaki. Pos ti vedno najde samo samo prvi zapis, s Posex pa lahko izbiraš od katere pozicije naprej ti išče.

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

kako najti stavke v tekstu?

Odgovor Napisal/-a vetta » 14.11.2005 20:54:34

Huh..., maš prou..., sm si zdele še mal bl natančno pogledu posex funkcijo!! Hvala!! Mogoče sedaj še kdo ve, kako preveriti, ali je velika ali majhna črka oz številka... Da ne bom zdej s celo abecedo primerju ;)

Hvala, Simon
http://moja-tinta.com/

wastrin
Prispevkov: 436
Pridružen: 14.06.2003 16:27:17

kako najti stavke v tekstu?

Odgovor Napisal/-a wastrin » 14.11.2005 21:10:19

Al je velika ali majhna začetnica lahko preverjaš če je znak med 'A' in 'Z' oziroma med 'a' in 'z'. Šumniki so seveda izjema. Cifre pa preverjaš če je znak med '0' in '9'. V tvojem primeru bi bilo mogoče bolje brati znak za znakom (s for zanko greš od fajl.Text[1] do fajl.text[length(fajl.text)]), kot pa s funkcijama pos in posex.

LP, Jure
trenuti projekt:
-----------------------------------------------------------------------
Reggae Player - http://sourceforge.net/projects/reggaeplayer
-----------------------------------------------------------------------

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

kako najti stavke v tekstu?

Odgovor Napisal/-a vetta » 14.11.2005 21:30:38

ja in kako nej bi gledu ukaz k bi redu al je črka med 'A' in 'Z'?
http://moja-tinta.com/

Odgovori