Получить целую часть строки в Паскале - PullRequest
0 голосов
/ 01 октября 2010

У меня есть строка Alpha 2, из которой мне нужно извлечь целую часть, т.е. 2.

Это быстрый и грязный проект, и в настоящее время я не заинтересован в изучении Паскаля. Все, что мне нужно, это быстрый ответ!

Ответы [ 2 ]

2 голосов
/ 01 октября 2010

Для метода, который ищет первое число в строке и возвращает его как целое число, используйте следующий код.Он либо возвратит положительное целочисленное значение, либо -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;
0 голосов
/ 01 октября 2010
var
  sub: string;
  i: Integer;
begin
  sub := Copy('Alpha 2', 7, 1);
  i := StrToInt(sub);

-

const
  str = 'Alpha 2';
var
  i: Integer;
begin
  i := StrToInt(str[7]);

-

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);

Существует также StrToIntDef , если вы не хотите, чтобы вызывалось исключение, когда аргумент не является целым числом.

...