Как извлечь слова из строки и хранить их где то в Lazarus(Pascal)?
У меня есть обработчик в котором я сравниваю длину слово полученную от пользователя и сравниваю с числом, который так же ввел пользователь в InputCountFromUser и если они совпадают я ввожу слово в OutputWordsFromStr.
Но как вводить строку и в ней каждые слова сравнивать с InputCountFromUser и выводить в OutputWordsFromStr слова, которые совпадали с числом введенное от пользователя т.е InputCountFromUser
ПРИМЕР: `` InputStrFromUser:= 'Привет Том! Как дела?' InputCountFromUser:= 3; и в Memo (OutputWordsFromStr) выводить слова Том и Как.
procedure TForm1.OutputBtnClick(Sender: TObject);
var
InputStr: string;
gg:integer;
begin
InputStr:= InputStrFromUser.Text;
OutputWordsFromStr.Clear;
if ( IntToStr(length(InputStr)) = InputCountFromUser.Text) then
begin
OutputWordsFromStr.Text:= InputStr;
end;
end;
РЕШЕНИЕ:
procedure TForm1.OutputBtnClick(Sender: TObject);
var
inputStr: string;
words: TStringList;
i:integer;
begin
inputStr := InputStrFromUser.Text;
OutputWords.Clear;
words:= TStringList.Create;
words.DelimitedText:= inputStr;
ShowMessage(IntToStr(words.Count));
for i := 0 to words.Count - 1 do
begin
if IntToStr(Length(words[i])) = InputCountFromUser.Text then
begin
OutputWords.Lines.Add(words[i]);
end;
end;
end;
Только разделить слов - это пробел, т.е в строке Привет мир!
2 слова Привет
и мир!
.
Знак !
так же учитывается.
Ответы (1 шт):
Извлечь слова из строки можно в TStringList или в массив строк. В Delphi есть Split.
Если во FreePascal именно такой функции вдруг нет, покопайтесь в StrUtils - я вижу SplitString