小弟要写一段procedure/function,如标题所说,在字符串里搜索所有的email地址(可以假设这些email都是正确的),并自动替换做指定的email(email B)
小弟思路有限,只知道在字符串里搜索@,但并不知道如何获得一个完整的email并且将其替换,希望大大们指点一下。谢谢。
50大洋立刻奉上

解决方案 »

  1.   

    这个做不到哦,除非你的Email地址@前面也有规律。
    比如:
    [email protected]
    每个Email地址是独立的一行,或者:
     [email protected] other word
    地址前后有一个空格什么的,总之如果就一个@特征符是没办法实现你的功能啦...
      

  2.   

    字符串里的EMAIL前后接的是什么字符? 是空格吗?
      

  3.   

    var
      emls:string;
      deli:TStringList;
      i:Integer;
    begin
      //地址样例
      emls := '[email protected] [email protected] [email protected] [email protected] [email protected]';
      //用空格分割
      deli := TStringList.Create;
      deli.Delimiter := ' ';
      deli.DelimitedText := emls;
      //显示分割的效果
      for I := 0 to deli.Count - 1 do
        ShowMessage(deli[i]);
      //显示替换的效果
      for I := 0 to deli.Count - 1 do
      begin
        if deli[i] = '[email protected]' then
          deli[i] := '[email protected]';
        ShowMessage(deli[i]);
      end;
    end;
      

  4.   

    不用TPerlRegEx的话
    procedure TForm1.Button6Click(Sender: TObject);
    var
      sl: TStringList;
      i: integer;
      AText: String;
    begin
      AText:= 'asdf fdasdf [email protected] fda [email protected] aseec';
      sl:= TStringList.Create;
      try
        sl.Delimiter:= ' ';
        sl.DelimitedText:= 'asdf fdasdf [email protected] fda [email protected] aseec';
        for i:= 0 to sl.Count - 1 do
          if AnsiPos('@',sl.Strings[i]) <> 0 then sl.Strings[i]:= '[email protected]';
        AText:= '';
        for i:= 0 to sl.Count - 1 do
          AText:= AText + sl.Strings[i]+ ' ';
        showmessage(AText);
      finally
        sl.Free;
      end;
    end;
      

  5.   

    ls的,我的字符串是个string类型,而你的S1是个Tstringlist,怎么做下string到Tstringlist的转换?我用S1.text := str; 不行解决立刻给分
      

  6.   


    //  sl.DelimitedText:= 'asdf fdasdf [email protected] fda [email protected] aseec';
    //可以改成 
      sl.DelimitedText:= AText;
      ....
    //最后的showmessage(AText);就是你所要的string. sl不是你所要的!
      

  7.   

    弄好了,看的不够仔细,现在看明白了,多谢各位。另外我的技术分是很多年前搞的,跟delphi无关。所以是个新手。结帐。非常感谢dinoalex的热心帮助!