这样的字符串怎么分割:
RMB39.00
$134.00
¥16.00
价格前面的字符带有不确定性.
我要将后面的价格取出来,如:39.00, 134.00, 16.00
请问如何操作?
RMB39.00
$134.00
¥16.00
价格前面的字符带有不确定性.
我要将后面的价格取出来,如:39.00, 134.00, 16.00
请问如何操作?
解决方案 »
- IE临时文件问题,100分请教
- 请问如何从internet连接到内网mssql服务器?
- RealAudio在播放时,为何出现除零错误?
- 简单问题:如何创建全局对象?
- Delphi对数据库访问时如何对图形字段进行插入、修改,用Sql来实现。
- 如何上新闻组?
- 早上醒来,发现五条内裤全都不见了,成了一只猩猩,光溜溜的,39度的天好凉爽呀!!呵,散分啦。。。。。。。。。
- 帮帮小弟把.很简单的问题!!一直没搞懂!!!
- 如何制作含有SQL server(个人版)数据库的应用软件的安装程序?急用!!!!
- 我用WebBrowser1时候老提示:尚未调用coinitiallize,我该怎么办?
- 高分求解~~~~怎么用ADOQUERY 把excel中的数据导如到SQL SERVER 2000中?~~~~~~~~在线等待
- DLL中的函数的字符串类型的返回值不能大于255吗?
edit2.text:=copy('$134.00',2,length('rmb39.00')-1);
edit3.text:=copy('¥16.00',2,length('¥16.00')-1);
tls:TStringList;
i:Integer;tls:=TStringList.Create;
try tls.Text:=StringReplace('RMB39.00,$134.00,¥16.00',',',#13#10);
for i:=0 to tls.Count-1 do
begin
//tls.Strings[i];
//RMB39.00
//$134.00
//¥16.00
//拉下来就可以去掉关导非数字字符了
end;
finally
tls.Free;
end;
2、用TryStrToInt可以判断出是否数字,知道了这个也就好处理了
3、如果金额都是整数的话(小数点后没有金额),用 fengzhengren(风筝)的方法也是一个不错的选择
//////////////////////////////
以上三种方法搂住任选
i:Integer;
s:String;
begin;
s:='$12356.0123';
i:=1;
while not (s[i] in ['0'..'9']) do inc(i);
s:=copy(s,i,Length(s)-i);
/////////////////////////
方法2加上一个循环就可以
///////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
var temp:string;
I,J,position:integer;
begin
temp:='RMB39.00';
for I:=1 to length(temp) do
begin
if TryStrToInt(temp[I],J) then
begin
position:=I;
break;
end;
end;
showmessage(rightstr(temp,length(temp)-position+1));
end;
先用flag := ',' 分割
if 是美圆 then
edit1.text:=copy('rmb39.00',4,length('rmb39.00')-3);
if 是英镑 then
edit2.text:=copy('$134.00',2,length('rmb39.00')-1);
if 是人民币 then
edit3.text:=copy('¥16.00',2,length('¥16.00')-1);
//从source中截取一flag为分隔符的字串
function SplitStringA(const source, flag: string): Tstringlist;
var
ts: Tstringlist;
begin
if Trim(source) <> '' then begin
ts := Tstringlist.create;
ts.Delimiter := flag[1];
ts.DelimitedText := source;
Result := ts;
end;
end;function SplitString(const source, flag: string): Tstringlist;
var
temp: string;
i: integer;
begin
if Trim(source) <> '' then begin
Result := Tstringlist.create;
temp := source;
i := pos(flag, source);
while i > 0 do begin
Result.Add(copy(temp, 0, i - 1));
delete(temp, 1, i);
i := pos(flag, temp);
end;
Result.Add(temp);
end
else
Result.Add('');
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
public
procedure SplitValue(sMoney: String; var sKind, sValue: String);
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.SplitValue(sMoney: String; var sKind, sValue: String);
var
iLoop : Integer;
begin
sKind := sMoney;
sValue := '';
for iLoop := 1 to length(sMoney) do
begin
if (copy(sMoney, iLoop, 1) >= '0') and (copy(sMoney, iLoop, 1) <= '9') then
begin
sKind := copy(sMoney, 1, iLoop - 1);
sValue := copy(sMoney, iLoop, length(sMoney) - iLoop + 1);
break;
end;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
var
sKind, sValue : String;
begin
SplitValue ('RMB39.00', sKind, sValue);
ShowMessage (sKind + ' ' + sValue); SplitValue ('$134.00', sKind, sValue);
ShowMessage (sKind + ' ' + sValue); SplitValue ('¥16.00', sKind, sValue);
ShowMessage (sKind + ' ' + sValue);
end;end.
i:integer;
begin
for i:=1 to length(s) do
begin
if s[i] in ['0'..'9','.'] then t:=t+s[i];
end;
showmessage(t);
end;
i:integer;
begin
for i:=1 to length(s) do
begin
if s[i] in ['0'..'9','.'] then t:=t+s[i];
end;
showmessage(t);
end;
我也同意楼上的看法