1.替换memo.text中所有连续两个空格为回车换行(每行末尾的空格除外)
2.替换memo.text所有的全角字符为半角字符

解决方案 »

  1.   

    memo1.text := StringReplace(memo1.text,'  ',#13#10,[rfReplaceAll]);
      

  2.   

    1。用pos('  ',memo.text)找到连续的两个空格,然后用#13#10替换。
    2。全脚字符长度是二,比如全脚字符a,它是#163和#255,b是#163和#256也就是说第一个字符都是#163,第二个字符类推
      

  3.   


    最后的代码如下:
    var
      i:Integer;
      str1,str2:AnsiString;
      BlandFrist:Boolean;
      const
      strcn='£á£â£ã£ä£å£æ£ç£è£é£ê£ë£ì£í£î£ï£ð£ñ£ò£ó£ô£õ£ö£÷£ø£ù£ú£Á£Â£Ã£Ä£Å£Æ£Ç£È£É£Ê£Ë£Ì£Í£Î£Ï£Ð£Ñ£Ò£Ó£Ô£Õ£Ö£×£Ø£Ù£Ú£à£±£²£³£´£µ£¶£·£¸£¹£°£­£½£Ü¡«££¡ç£¥£Þ£¦£¨£©£ß£«£ü£Û£Ý£û£ý£¯£¼£¾£¿£ ';
      stren='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`1234567890-=\~#$%^&()_+|[]{}/<>? ';begin
      for i:=1 to 87 do
      begin
        str1:=copy(strcn,2*i-1,2);
        str2:=copy(stren,i,1);
        DBMemo1.text:=StringReplace(DBMemo1.text,str1,str2,[rfReplaceAll]);
      end;  i:=0;
      while (i<DBMemo1.Lines.Count) do
        begin
          if Trim(DBMemo1.Lines.Strings[i])='' then begin DBMemo1.Lines.Delete(i);continue;end;
          if pos('  ',Trim(DBMemo1.Lines.Strings[i]))>0 then
            begin
               DBMemo1.Lines.Strings[i]:= StringReplace(DBMemo1.Lines.Strings[i],'  ',#13#10+'    ',[rfReplaceAll]);
               i:=i-1;
            end;
          i:=i+1;
        end;
    end;