![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Всем доброй ночи
Помогите решить такое вот задание: Сформировать текстовый файл, в который записать все предложения исходного текста, содержащие кому, а также нужно сформировать список, содержащий длину каждого предложения исходного текста. Может что-то из этого кода можно "выковырять"? Код:
procedure TForm1.Button1Click(Sender: TObject);
const
//Разделители предложений.
Df = ['.', '!', '?'];
//Разделители слов.
Da = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
S : String;
//P1 - позиция начала предложения. CntW - счётчик слов в предложении.
i, CntW, P1, Len : Integer;
begin
Memo2.Clear;
//Исходный текст.
S := Memo1.Text;
Len := Length(S);
//Обработка текста.
P1 := 0;
CntW := 0;
for i := 1 to Len do begin
//Отслеживаем начало предложения.
if (i = 1) or (S[i - 1] in Df) then P1 := i;
//Если символ не является разделителем слова.
if not (S[i] in Da) then begin;
//Отслеживаем конец слова и подсчитываем слово.
if (i = Len) or (S[i + 1] in Da) then Inc(CntW);
end;
//Отслеживаем конец предложения.
if (i = Len) or (S[i] in Df) then begin
//Если количество слов >= 3, то добавляем это предложение
//в Мемо результата.
if CntW >= 2 then Memo2.Lines.Add( Copy(S, P1, i - P1 + 1) );
//Сброс счётчика слов.
CntW := 0;
end;
end;
end; |
|
#2
|
||||
|
||||
|
Цитата:
Это слово в предложении? Это адресат в некоем формате? Это просто запятая (по английски). О чем вообще речь идет? |
|
#3
|
|||
|
|||
|
Цитата:
Спасибо за ответ. Сорри, за неясность. Это обычная запятая в преложении (,). |
|
#4
|
||||
|
||||
|
Тогда все проще некуда. Используйте клас TStringList, он содержит методы которые легко позволяют решить эту задачу:
Код:
Var
SL: TStringList;
i: Integer;
begin
SL := TStringList.Create;
SL.StrictDelimiter := True;
SL.Delimiter := ',';
SL.DelimitedText := 'Это текст, в котором есть запятая, точка, вопросительный знак и прочее?';
SL.SaveToFile('CommaFile.txt');
for i := 0 to SL.Count - 1
do SL.Strings[i] := SL.Strings[i] + ' - ' + IntToStr(Length(SL.Strings[i]));
ShowMessage(SL.Text);
end;Последний раз редактировалось Страдалецъ, 17.05.2014 в 09:22. |