Zahl extrahieren



  • Hallo Community,

    ich habe einen string, welcher mit einer Zeichenkette beginnt und mit einer Zahlenfolge endet.

    Dafür benutze ich folgendes:

    string theString = "Hallo1234";
    IEnumerable<char> number = theString.SkipWhile(c => !char.IsDigit(c));
    

    Es gibt keinen string-Konstruktor, welcher IEnumerable annimmt, sondern ein char -Array

    string theString = "Hallo1234";
    IEnumerable<char> numberEnumerable = theString.SkipWhile(c => !char.IsDigit(c));
    char[] numberArray = numberEnumerable.ToArray();
    string numberString = new string(numberArray);
    
    //eine Konvertierung ist auch noch notwendig
    int number = Convert.ToInt32(numberString);
    

    Wie ihr seht, komme ich zwar zu meinem Ziel, jedoch sehr umständlich.

    Gibt es für sowas eine bessere Methode?

    Mfg



  • string theString = "Hallo1234";
    
    //Mit Regex
    int num1 = int.Parse(Regex.Match(theString, @"(\d+)").Value);
    
    // Deine Variante verkürzt
    int num2 = int.Parse(new string(theString.Where(c => char.IsDigit(c)).ToArray()));
    
    //Wenn du beides brauchst
    int firstDigit = theString.IndexOfAny("0123456789".ToCharArray());
    int num = int.Parse(theString.Substring(firstDigit));
    string rest = theString.Substring(0, firstDigit);
    


  • Schöne Regex-Lösung!
    Merke ich mir! 😋 👍


Log in to reply