假如有一字符串是这样"/dev/sda1     155G 6.3G 141G 70% Very Much"
我想把百分号前面的70给提出来,其它数字不要,请问用Delphi有什么办法?
谢谢

解决方案 »

  1.   

    strSrc:='/dev/sda1    155G 6.3G 141G 70% Very Much';
    srrDest:= copy(strSrc,pos('%',strSrc)-3,2);应该能实现,你试试
      

  2.   

    修正一下
    strSrc:='/dev/sda1    155G 6.3G 141G 70% Very Much'; 
    srrDest:= copy(strSrc,pos('%',strSrc)-2,2);
    测试好用 
      

  3.   


    procedure TForm1.Button1Click(Sender: TObject);
    const
      str = '/dev/sda1    155G 6.3G 141G 70% Very Much';
    var
      i, n : integer;
      sStr : string;
    begin
      sStr := '';
      n := pos('%',str);
      for i := n - 1 downto 0 do
        if str[i] in ['0'..'9'] then
          sStr := str[i] + sStr
        else
          break;
      edit1.text := sStr;
    end;
      

  4.   

    function ParseMyString(MyString:string):string;
    var
      i:integer;
    begin
      result:='';
      for i:=1 to length(MyString)-1 do
      begin
        if MyString[i]='%' then
          break;
      end;
      result:=result+MyString[i-3]+MyString[i-2]+MyString[i-1];
    end;
      

  5.   

    这样的话只能取百分号前的两位。改成这样:var
      Position, i: Integer;
      strSrc: string;
    begin
      strSrc := '/dev/sda1    155G 6.3G 141G 70% Very Much'; 
      Position := Pos('%', strSrc);
      i := Position;
      repeat
        Dec(i);
      until not (strSrc[i] in ['0'..'9']);
      Result := Copy(strSrc, i + 1, Position - i - 1);
    end;
      

  6.   

    1,2楼的直接截长度会有问题,如果70%变成701%,怎么处理?LZ: 3楼的方法可以用于取整数,如果要考试小数,可以按下边写
      str = '/dev/sda1    155G 6.3G 141G 70% Very Much';
      //str = '/dev/sda1    155G 6.3G 141G 70.1% Very Much';
      //str = '/dev/sda1    155G 6.3G 141G 701% Very Much';这三句任选其一都可以正常显示procedure TForm1.Button1Click(Sender: TObject);
    const
      str = '/dev/sda1    155G 6.3G 141G 70% Very Much';
      //str = '/dev/sda1    155G 6.3G 141G 70.1% Very Much';
      //str = '/dev/sda1    155G 6.3G 141G 701% Very Much';
    var
      i, n : integer;
      sStr : string;
    begin
      sStr := '';
      n := pos('%',str);
      for i := n - 1 downto 0 do
        if str[i] in ['0'..'9','.'] then
          sStr := str[i] + sStr
        else
          break;
      edit1.text := sStr;
    end;
      

  7.   

    这个方法不错,我是用Console Application写的,谢谢你
    上面几楼的,我也很感谢,写得也不错,只是会有一点不足,就是没有考虑好
    如果不是70%,而是7%或7.0%,呵呵