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;
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;
这样的话只能取百分号前的两位。改成这样: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;
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;
srrDest:= copy(strSrc,pos('%',strSrc)-3,2);应该能实现,你试试
strSrc:='/dev/sda1 155G 6.3G 141G 70% Very Much';
srrDest:= copy(strSrc,pos('%',strSrc)-2,2);
测试好用
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;
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;
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;
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;
上面几楼的,我也很感谢,写得也不错,只是会有一点不足,就是没有考虑好
如果不是70%,而是7%或7.0%,呵呵