如何從字串中提取數值,比如從'-10(16mn)'中提取10這個數值,當然在字串中'-'後面
的數值長度不定,而( )中的字串長度也不定。
來個迴圈比較看看,條件是:in(0..9)
str := 'abc056'
s:='';
for i:=1 to length(str) do
begin
if str[i] in ['0'..'9'] then
s:=s+str[i];
end;
pos 加for應該可以提取出來
var s1:string;
i:integer;
begin
s1:='-10(16mn)';
i:=pos('-',s1);
s1:=copy(s1,i+1,length(s1)-i);
i:=pos('(',s1);
s1:=copy(s1,1,i-1);//這時s1中就是'10'這個字串了
end;
terry_lzs的方法思路是對的,不過不必過濾負號.
result := strtoint(copy(s, 1, pos('(', s) - 1);
如果不知道是用'('分隔的話會麻煩些:
b := true;
while b do
try
x := strtoint(s);
b := false;
except
s := copy(s, 1, length(s) - 1);
end;
第二個演算法有點問題,改一下:
b := true;
while b do
try
x := strtoint(s);
b := false;
except
if length(s) = 0 then break
else
s := copy(s, 1, length(s) - 1);
end;
var
ss:string;
i:integer;
begin
i:=pos('10','-10(16mn)');
label1.caption:=copy('-10(16mn)',i,2);
end;
上面各位的方法都可以,但我想大家可能都忽視了乙個從pascal繼承下來,但現在很少用
的函式val,請看下面的程式
var
s: string;
code: integer;
value: real;
begin
s := 'abc-10.22e2(a';
repeat
val(s, value, code);
case code of
0: //轉換成功
showmessage(floattostr(value));
1: //開頭有非法字元
delete(s, 1, 1);
else //末尾有非法字元
delete(s, code, length(s));
end;
until (code = 0) or (length(s) = 0);
end;
這段程式的優點在於,它不但對於檢測整數有效,檢測浮點數同樣有效。
htm
多謝各位幫助
從字串中提取數字
下面程式將字串中的連續數字提取出來,並存放到一維陣列中。比如說乙個字串 a284twx234 je3432 把 284 234 3432 這3個連續數字提取出來,分別存放到a 0 a 1 a 2 中。include include include int main buf i 0 sscanf bu...
從字串中提取整數
首先說一下我要做的事情 從乙個txt檔案中 存著乙個矩陣 從這個檔案中提取出這個檔案中的整數。矩陣 1 2 3 4 5 6 7 8 0 1 8 7 3 8 2 9 之前用的函式是fgets char fgets char s,int n,file stream 引數 s 字元型指標,指向儲存讀入資料...
MySQL 從字串欄位中提取數值的方法
個人記錄 需求描述 有乙個公司資訊表 r supplier 其中有乙個字段 register capital 是公司的註冊資本,需要提取前面的數字進行條件判斷。如圖所示 sql select cast s.register capital as unsigned from r supplier s ...