2010-10-01 12 views
0

J'ai une chaîne Alpha 2 à partir de laquelle j'ai besoin d'extraire la partie entière, c'est-à-dire 2.Obtenir la partie entière de la chaîne dans Pascal

Ceci est un projet rapide et sale et je ne suis pas actuellement intéressé par l'apprentissage de Pascal. Tout ce dont j'ai besoin est une réponse rapide!

Répondre

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

Il y a aussi StrToIntDef si vous ne voulez pas d'une exception soulevée lorsque l'argument n'est pas un entier.

+0

Je vais avec votre troisième suggestion. – Icode4food

+0

Si vous utilisez Free Pascal, vous pouvez utiliser strutils.rpos (pos de l'extrémité arrière de la chaîne). Il survivra également si le texte devant le numéro contient un espace. –

2

Pour une méthode qui recherche le premier nombre dans une chaîne et le renvoie en tant qu'entier, utilisez le code suivant. Il renverra une valeur entière positive ou -1 si aucun nombre n'a été trouvé dans la chaîne.

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;