//Memo1.Lines.Text := RenderHtml2Text(s);
SynEdit1.Lines.Text := s;
s := RenderHtml2Text(s);
// Remove spaces surrounded by line endings
s := ReplaceRegExpr('(\x0A)\x20+(\x0A)', s, '$1$2', TRUE); // Linux
s := ReplaceRegExpr('(\x0D\x0A)\x20+(\x0D\x0A)', s, '$1$2', TRUE); // Windows
// Remove spaces after line endings
s := ReplaceRegExpr('(\x0A)\x20+', s, '$1', TRUE); // L.
s := ReplaceRegExpr('(\x0D\x0A)\x20+', s, '$1', TRUE); // W.
// Remove spaces at beginning of the string
s := ReplaceRegExpr('^\x20+', s, '', FALSE);
// Set maximal blank lines number to 2
s := ReplaceRegExpr('\x0A{3,}', s, #$0A#$0A, FALSE); // L.
s := ReplaceRegExpr('(\x0D\x0A){3,}', s, #$0D#$0A#$0D#$0A, FALSE); // W.
Memo1.Lines.Text := s;