Scripting 获取Pascal中字符串的整数部分

Scripting 获取Pascal中字符串的整数部分,scripting,string,pascal,Scripting,String,Pascal,我有一个字符串Alpha 2,需要从中提取整数部分,即2 这是一个又快又脏的项目,我现在对学习Pascal不感兴趣。我只需要一个快速的回答 var sub: string; i: Integer; begin sub := Copy('Alpha 2', 7, 1); i := StrToInt(sub); - - 如果不希望在参数不是整数时引发异常,还有一个问题。对于搜索字符串中的第一个数字并将其作为整数返回的方法,请使用以下代码。它将返回正整数值,如果在字符串中找不到数字,

我有一个字符串
Alpha 2
,需要从中提取整数部分,即
2

这是一个又快又脏的项目,我现在对学习Pascal不感兴趣。我只需要一个快速的回答

var
  sub: string;
  i: Integer;
begin
  sub := Copy('Alpha 2', 7, 1);
  i := StrToInt(sub);
-

-


如果不希望在参数不是整数时引发异常,还有一个问题。

对于搜索字符串中的第一个数字并将其作为整数返回的方法,请使用以下代码。它将返回正整数值,如果在字符串中找不到数字,则返回-1

function IntegerInString(s: string) : integer;
var i, state, startPos, endPos : integer;
begin
  state := 0;
  startPos := -1;
  endPos := Length(s);
  for i := 1 to Length(s) do
  begin
    if ((s[i] >= '0') and (s[i] <= '9') then
    begin
      if state = 0 then startPos := i;
      state := 1;
    end else
      if state = 1 then
      begin
        endPos := i;
        break;
      end;
    end;
  end;
  if startPos > -1 then
    result := IntToStr(Copy(s, startPos, endPos))
  else
    result := -1;
end;
函数IntegerInString(s:string):整数;
变量i、状态、起始点、结束点:整数;
开始
状态:=0;
startPos:=-1;
endPos:=长度(s);
对于i:=1到长度do
开始
如果((s[i]>='0')和(s[i]-1,则
结果:=IntToStr(副本(s、startPos、endPos))
其他的
结果:=-1;
结束;

我同意你的第三个建议。如果使用免费Pascal,你可能希望使用strutils.rpos(字符串后端的pos)。如果数字前面的文本包含空格,它也将继续存在。
var
  str: string;
  sub: string;
  spc: Integer;
  i: Integer;
begin
  str := 'Alpha 257';
  spc := Pos(' ', str);
  sub := Copy(str, spc + 1, Length(str) - spc);
  i := StrToInt(sub);
function IntegerInString(s: string) : integer;
var i, state, startPos, endPos : integer;
begin
  state := 0;
  startPos := -1;
  endPos := Length(s);
  for i := 1 to Length(s) do
  begin
    if ((s[i] >= '0') and (s[i] <= '9') then
    begin
      if state = 0 then startPos := i;
      state := 1;
    end else
      if state = 1 then
      begin
        endPos := i;
        break;
      end;
    end;
  end;
  if startPos > -1 then
    result := IntToStr(Copy(s, startPos, endPos))
  else
    result := -1;
end;