Var i, aLine, LineJ, lineK: Integer; tmpWideStr: WideString; tmpStr: String; aStrList: TStringList;
Begin aStrList := TStringList.Create; aStrList.Text := Memo1.Lines.Text; aLine := aStrList.count; For i := aLine - 1 Downto 0 Do Begin tmpWideStr := Trim(aStrList.Strings[i]); //前后空格
If tmpStr <> '' Then Begin For LineJ := 1 To Length(tmpWideStr) Do Begin //从前往后去空 If (tmpWideStr[LineJ] <> ' ' {全角空格}) And (tmpWideStr[LineJ] <> #9 {TAB}) Then Begin
For lineK := Length(tmpWideStr) Downto 1 Do Begin //从后往前去空 If (tmpWideStr[LineJ] <> ' ' {全角空格}) And (tmpWideStr[LineJ] <> #9 {TAB}) Then Begin aStrList.Strings[i] := ' ' + Copy(tmpWideStr, LineJ, lineK - lineJ + 1); Break; End; End; Break; End; End; End Else {tmpWideStr = ''} aStrList.Delete(i); End;
aLine := aStrList.count; For i := aLine - 1 Downto 1 Do Begin //每一段落加一空行 以便阅读 aStrList.Insert(i, ''); End; Memo1.Lines.Text := aStrList.Text; Memo1.Repaint; aStrList.Free;