2010-10-01 2 views
0

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

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

ответ

0
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, если вы не хотите исключением быть поднят, когда аргумент не является целым числом.

+0

Я собираюсь с вашим третьим предложением. – Icode4food

+0

Если вы используете Free Pascal, вы можете использовать strutils.rpos (pos из заднего конца строки). Он также сохранится, если текст перед номером содержит пробел. –

2

Для метода, который ищет первое число в строке и возвращает его как целое число, используйте следующий код. Он либо вернет положительное целочисленное значение, либо -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; 
Смежные вопросы