最简单不过的字符串处理. ( 积分: 50 )

  • 主题发起人 主题发起人 m911
  • 开始时间 开始时间
M

m911

Unregistered / Unconfirmed
GUEST, unregistred user!
有类似这样的字符串 s := '452.025.955:54DF/AAAA.FF:4DD';
要取'/'到最后一个':'之间的内容 然后将内容和一个表对比,表内容如下
AAAA.BB = '一月资料'
AAAA.RR = '二月资料'
AAAA.FF = '三月资料'
AAAA.PP = '一季度资料'
AAAA.TT = '二季度资料'
AAAA.VV = '三季度资料'

然后将对比出来的结果加在后面 处理后结果就是
s := '452.025.955:54DF/AAAA.FF:4DD三月资料';

如何将处理过程做成函数呢? 本人新手 请贴代码 谢谢.
 
var
nPos:integer;
MyStr:String;
begin
nPos:= Pos('/',s);
MyStr:=Copy(s,npos,7);
end;
没测试...
 
function TForm1.StrFunc(const AText: String): String;
var
sTable: TStrings;
i: Integer;
sID: String;
begin
Result := '';
i := Pos('/',AText);
if i < 1 then Exit;
sID := Copy(AText,i + 1,Length(AText) - i);
i := Pos(':',sID);
if i < 1 then Exit;
sID := Copy(sID,1,i - 1);
sTable := TStringList.Create;
try
with sTable do begin
Values['AAAA.BB'] := '一月资料';
Values['AAAA.RR'] := '二月资料';
Values['AAAA.FF'] := '三月资料';
Values['AAAA.PP'] := '一季度资料';
Values['AAAA.TT'] := '二季度资料';
Values['AAAA.VV'] := '三季度资料';
i := IndexOfName(sID);
if i <> -1 then Result := AText + ValueFromIndex;
end;
finally
sTable.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(StrFunc('452.025.955:54DF/AAAA.FF:4DD'));
end;
 
liyinwei, 的方法好像可以,但是 在没有匹配字符的情况下 返回的怎么是空的哦? 应该是原字符串才对哦,应该怎么改呢?

还有一个小问题 就是 如果比对最后一个':'后的所有内容 应该怎么改?

谢谢
 
if i <> -1 then Result := AText + ValueFromIndex
else
Result := AText; // 找不到, 则返回原来的内容
 
uses
StrUtils;

function TForm1.StrFunc(const AText: String): String;
var
sTable: TStrings;
i: Integer;
sID: String;
begin
Result := AText;
sID := ReverseString(AText);
i := Pos(':',sID);
if i < 1 then Exit;
sID := ReverseString(Copy(sID,1,i - 1));
sTable := TStringList.Create;
try
with sTable do begin
Values['AAAA.BB'] := '一月资料';
Values['AAAA.RR'] := '二月资料';
Values['AAAA.FF'] := '三月资料';
Values['AAAA.PP'] := '一季度资料';
Values['AAAA.TT'] := '二季度资料';
Values['AAAA.VV'] := '三季度资料';
i := IndexOfName(sID);
if i <> -1 then Result := AText + ValueFromIndex;
end;
finally
sTable.Free;
end;
end;
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
628
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部