比如一个字符串是“123你好456Hello”
要求过滤后
S1:=‘123456’
S2:=‘你好’
S3:='Hello'
也就是把数字、英文、汉字都单独提出来。
请问应该用什么函数?谢谢

解决方案 »

  1.   

    用正则吧,否则就自己遍历,根据每个字符的asic吗,判断是否为汉字,如果是提取汉字拼接,如果是字母提取,如果是数组提取,等待
      

  2.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
      I, One: Integer;
      S: WideString;
      S1,S2,S3: string;
    begin
      S := '123你好456Hello';
      S1 := ''; S2 := ''; S3 := '';  for I := 1 to Length(S) do
      begin
        One := Integer(S[I]);
        if (One >= Ord('0')) and (One <= Ord('9')) then
          S1 := S1 + S[I]
        else if ((One >= Ord('a')) and (One <= Ord('z'))) or ((One >= Ord('A')) and (One <= Ord('Z'))) then
          S3 := S3 + S[I]
        else
          S2 := S2 + S[I]
      end;  ShowMessage(S1);
      ShowMessage(S2);
      ShowMessage(S3);
    end;
      

  3.   

    var
      i:integer;
      s1,s2,s3:string;
      s:widestring;
    begin
      s:='123你好456Hello';
      for i:=1 to length(s) do
      begin
        if Ord(s[i]) in [48..57] then
           s1:=s1+s[i]
        else if Ord(s[i]) in [65..90,97..122] then
           s2:=s2+s[i]
        else
           s3:=s3+s[i];
      end;  showmessage(s1+s2+s3);
    end;