比如有字符串:“1.1临时工工资”,现在我想将其中的中文取出来,即“临时工工资”,请问一下该如何做呀?如何判断是否是中文字符?

解决方案 »

  1.   

    function WideFilter(mStr: string): string;
    var
      I: Integer;
    begin
      Result := '';
      for I := 1 to Length(WideString(mStr)) do
        if Length(string(WideString(mStr)[I])) >= 2 then
          Result := Result + WideString(mStr)[I];
    end;//....
    begin
      Caption := WideFilter('1.1临时工工资');
    end;
      

  2.   

    例如:
    str:='1.1临时工工资';
    for i:=0 to length(str)-1 do
      begin
        if IsDBCSLeadByte(Byte(Str[i])) then
          begin
            Str2:=Copy(Str,i,length(str)-i);
          end;
      end;
      

  3.   

    procedure TForm1.Button4Click(Sender: TObject);
    var s ,t:string;
         i:integer;
    begin
      s :='1.1临时工工资';
      for i:=0 to length(s) do
        begin
          if (ord(s[i])>127) then t:=t+s[i];
        end;
          showmessage(t);
    end;
      

  4.   

    zswang(伴水清清)(专家门诊清洁工),drift1981(一包香烟,一把吉他,浪迹天涯!) 都应没问题
     SuanAddMiao(算苗) 通过判断字符字节数来区分数字与汉字(若在全角状态下输入则失效),但程序中稍有问题,修改如下:
      str:='1.1临时工工资';//失效
      str:='1.1临时工工资';//正确
      len:=length(str)-1;
      for i:=0 to len do
      begin
        if IsDBCSLeadByte(Byte(Str[i])) then
        begin
          S:=S+Copy(Str,i,1);
        end;
      end;
      showmessage(S);
      

  5.   

    s:='1.1临时工工资';
        len:=length(s);
        i:=1;
        while true do
        begin
            if ord(s[i])<128 then
            begin
                delete(s,i,1);
                dec(i);
                dec(len);
            end;
            inc(i);
            if i>len then break;
        end;
        memo1.Lines.Add(s);:)我也是新手,试着写了一下,不知道有没有什么毛病,基本上是实现了,请各位多加指点~~