Разбить текст на абзацы
Есть текст в Memo1.Text напечатанный в одну строчку. Пример текста:
Все люди любят мечтать. Особенно в детстве. И это очень хорошо. История заветной детской мечты. ставшей явью. Далее в обзоре.
Как разбить текст по три предложения в строке и поставить между ними абзац ? Что бы на выходе в Memo1.Text был результат:
Все люди любят мечтать. Особенно в детстве. И это очень хорошо.
История заветной детской мечты. ставшей явью. Далее в обзоре.
Додумалась пока что как разбить на отдельные предложения. Будет вот так:
var i:integer;
s:string;
begin
s:=Memo1.Text;
i:=2;
while i<length(s) do
if(s[i]=' ')and(s[i-1] in ['.'])then
begin
insert(#13#10,s,i+1);
i:=i+1;
end
else i:=i+1;
Memo1.Text:=s
end;
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
var
s, ss: string;
sl: TStringList;
i: integer;
begin
s := 'Все люди любят мечтать. Особенно в детстве. И это очень хорошо. История заветной детской мечты. ставшей явью. Далее в обзоре. qq. pp';
sl := TStringList.Create;
sl.Delimiter := '.';
sl.StrictDelimiter := true;
sl.DelimitedText := s;
ss := '';
for i := 0 to sl.Count - 1 do begin
if Length(sl[i]) > 0 then
ss := ss + sl[i] + '.';
if i mod 3 = 2 then begin
Memo1.Lines.Add(ss);
Memo1.Lines.Add('');
ss := '';
end;
end;
if sl.Count mod 3 <> 0 then
Memo1.Lines.Add(ss);
sl.Free;