2 votes

Isoler int de string

J'ai une chaîne qui est un mot, puis =, puis un nombre.

Par exemple

"RefreshRate=75"

Je veux récupérer le nombre entier à la fin et le stocker dans un Int. Le programme utilise cette valeur qui est stockée dans un fichier ini, j'ai besoin d'isoler cette valeur car d'autres calculs de valeurs sont basés sur elle.

Comment cela peut-il être fait ?

Merci d'avance

Ooooopsss :

Désolé les gars, j'ai fait une erreur.

La chaîne de caractères est en fait au format "RefreshRate=numHz"... c'est-à-dire "RefreshRate=65Hz"... Je suis sûr que cela devrait fonctionner, mais j'obtiens "Incorrect input format error" car il ajoute également le Hz, et cela déclenche l'exception :s

2voto

AsifQadri Points 1797

Si vous confirmez le format de votre texte dans Word, vous pouvez utiliser ceci

var word="RefreshRate = 756numHZ";
         int n;
         int.TryParse(word.tolower().Replace("refreshrate","").Replace("=", "").Replace("numhz", "").Trim(), out n);

Cela permettra également de traiter les cas d'espaces vides dans votre texte.

1voto

Steve Michelotti Points 3767
var line = "RefreshRate=75";
int number = int.Parse(line.Split('=')[1]);

0voto

Vous pouvez faire quelque chose dans ce sens, en supposant que yourString contient le texte RefreshRate=75 .

int.Parse(yourString.Substring(yourString.IndexOf("=")+1));

0voto

Conrad Frix Points 34272

Si vous ne voulez pas vous occuper de la vérification de "RefreshRate=" ou "RefreshRate==" ou "RefreshRate=Foobar", vous pouvez procéder comme suit

public static class IntParseExtension
    {
        public static bool TryParseInt(this string s, out int i)
        {
            i = 0;     
            bool retVal = false;
            int index;
            string sNumber;
            index = s.IndexOf("=");
            if (index > -1)
            {
                sNumber = s.Substring(index + 1);
                if (sNumber.Length > 0)
                    retVal = int.TryParse(sNumber, out i);
            }
            return retVal;
        }
    }

-3voto

yoav.str Points 296
 class Program
{
    static void Main(string[] args)
    {
        int j = 0 ;
        bool flag = false;
        string s = "myage = 400";

        char[]c = s.ToCharArray();
        for (int i = 0; i <= s.Length -1; i++)
        {
            if ((c[i] > '0') && (c[i] < '9'))
            {
                flag = true;
            }
            if (flag)
            {
                c[j++] = c[i];
            }
        }
        //for (; j < s.Length - 1; j++)
        //{
            c[j] = '\0';

        s = new string(c,0,j);
        int num = int.Parse(s);
        Console.WriteLine("{0}",num);
        Console.ReadKey();
    }

Je ne sais pas s'il existe une meilleure solution... celle-ci fonctionne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X