如何從字串中提取數值

2021-08-27 01:46:51 字數 1767 閱讀 8422

如何從字串中提取數值,比如從'-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 ...