2

我有一些在运行时动态创建的字符串。

这些值是按顺序生成的,带有下划线、前导零,然后是序列号。格式如下所示:

_00001  
_00002  
_00003  
_00004

_00098  
_00099  
_00100  
_00101

我想将数字部分提取为整数,忽略下划线和前导零。

StringReplace可以轻松删除下划线部分,但是如何提取数字部分,因为我无法知道值是什么?

这种函数如何工作的一些示例输出:

_00003= 3
_00098= 98
_00482= 482
_07218= 7218
_14005= 14005
_37585= 37585
_69732=69732

StringReplace并且Pos是我的想法,但我并不总是确定如何充分使用Pos,并且该StringReplace方法可能会很混乱。

我认为我需要做的就是检查第一个不是 0 的数字,但也许我再次让自己感到困惑,所以真的欢迎任何指针。

4

2 回答 2

13

你应该使用

StrToInt(Copy(S, 2))

实际上,Copy(S, 2)返回S除第一个字符之外的所有字符,因此您将得到000030009800482等。您可以使用 . 轻松将这些字符转换为相应的整数StrToInt

于 2013-09-25T17:13:04.027 回答
3

你可以使用这样的东西:

function YourTypeStrToInt(const StrNum: String): Integer;
begin
  Result := StrToInt(Trim(StrNum.Remove(0, 1)));
end;

对于旧的 Delphi 版本:

function YourTypeStrToInt(const StrNum: String): Integer;
var
  P: PChar;
begin
 P:=PChar(Trim(StrNum));
 Inc(P);
 Result:=StrToInt(P);
end;
于 2013-09-25T17:47:43.530 回答