Odnajdywanie pojedynczych liter na końcu zdania

Odpowiedz Nowy wątek
2017-03-10 10:20
0

Cześć wam!
Może ktoś z was mi podpowie jak wyszukać pojedynczy wyraz na końcu zdania.

Moje instrukcje jakie wykonuje:

  1. Ładuje tekst z pliku do Memo
  2. W pętli for przelatuje po kolei wszystkie linie z Memo

I teraz pytanie, jak znaleźć ostatni wyraz w danej linii i jej pozycję? :/

Znalazłem pewną funkcję, która liczy ilość wyrazów, jednakże tylko pokazuje jej ilość właśnie, a chciałbym sprawdzić, czy ostatni wyraz to pojedyncza litera np "w" itd. Proszę o pomoc/ wskazówki.

Będę wdzięczny, pozdrawiam.

function WordCount(CText: string): Longint;
var
  Ix: Word;
  Work_Count: Longint;
begin
  Work_Count := 0;
  Ix         := 1;
  while Ix <= Length(CText) do
  begin
    while (Ix <= Length(CText)) and (Seps(CText[Ix])) do
      Inc(Ix);
    if Ix <= Length(CText) then
    begin
      Inc(Work_Count);

      while (Ix <= Length(CText)) and (not Seps(CText[Ix])) do
        Inc(Ix);
    end;
  end;
  Result := Work_Count;
end;
edytowany 2x, ostatnio: furious programming, 2017-03-10 10:24

Pozostało 580 znaków

2017-03-10 10:27
0

Moje instrukcje jakie wykonuje:

  1. Ładuje tekst z pliku do Memo
  2. W pętli for przelatuje po kolei wszystkie linie z Memo

Pokaż jakieś przykładowe dane i dla nich podaj rozwiązanie - tak będzie łatwiej.

I teraz pytanie, jak znaleźć ostatni wyraz w danej linii i jej pozycję?

Jej pozycję? Chodzi o pozycję linii czy wyrazu? Jeśli o linię to znasz pozycję, bo lecisz po wszystkich za pomocą pętli for (w każdej iteracji znany jest indeks linii i wynosi tyle ile iterator).

Znalazłem pewną funkcję, która liczy ilość wyrazów [...]

Brakuje definicji tego Seps, choć domyślam się do czego służy.


edytowany 1x, ostatnio: furious programming, 2017-03-10 10:29

Pozostało 580 znaków

2017-03-10 11:17
0

Ja ostatni wyraz wyszukałbym robiąc mniej więcej coś takiego:

uses StrUtils ;

procedure JakisProcName(const pInputLine: AnsiString);
var
  s: AnsiString;
  spaceBarPos: integer;
begin
  s := TrimLeft(AnsiReverseString(pInputLine)); //usuwamy spację z końca zdania - teraz z początku - gdyby się takowa pojawiła  //i lecimy od tyłu
  // teraz trzeba poszukać pierwszej spacji 
  spaceBarPos := pos(CHr(32),s);
 // jeśli spaceBarPos będzie większe od 0 to długość pInputLine - spaceBarPos +1 to początek ostatniego wyrazu
end;

pisane z głowy więc sobie to sam przetestuj i zweryfikuj

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0