470 Stimmen

Suchen und Extrahieren einer Zahl aus einer Zeichenkette

Ich habe die Anforderung, eine in einer Zeichenkette enthaltene Zahl zu finden und zu extrahieren.

Zum Beispiel aus diesen Zeichenfolgen:

string test = "1 test"
string test1 = " 1 test"
string test2 = "test 99"

Wie kann ich das tun?

30voto

Tabares Punkte 3663

Regex.Split kann Zahlen aus Zeichenketten extrahieren. Sie erhalten alle Zahlen, die in einer Zeichenkette gefunden werden.

string input = "There are 4 numbers in this string: 40, 30, and 10.";
// Split on one or more non-digit characters.
string[] numbers = Regex.Split(input, @"\D+");
foreach (string value in numbers)
{
    if (!string.IsNullOrEmpty(value))
    {
    int i = int.Parse(value);
    Console.WriteLine("Number: {0}", i);
    }
}

Ausgabe:

Nummer: 4 Zahl: 40 Zahl: 30 Zahl: 10

21voto

Tarek El-Mallah Punkte 3770

Wenn die Zahl eine Dezimalstelle hat, können Sie Folgendes verwenden

using System;
using System.Text.RegularExpressions;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //Your code goes here
            Console.WriteLine(Regex.Match("anything 876.8 anything", @"\d+\.*\d*").Value);
            Console.WriteLine(Regex.Match("anything 876 anything", @"\d+\.*\d*").Value);
            Console.WriteLine(Regex.Match("$876435", @"\d+\.*\d*").Value);
            Console.WriteLine(Regex.Match("$876.435", @"\d+\.*\d*").Value);
        }
    }
}

Ergebnisse:

"irgendetwas 876.8 irgendetwas" ==> 876.8

"irgendetwas 876 irgendetwas" ==> 876

"$876435" ==> 876435

"$876.435" ==> 876.435

Beispiel: https://dotnetfiddle.net/IrtqVt

17voto

spajce Punkte 6968

Hier ist ein Linq Version:

string s = "123iuow45ss";
var getNumbers = (from t in s
                  where char.IsDigit(t)
                  select t).ToArray();
Console.WriteLine(new string(getNumbers));

16voto

Eine weitere einfache Lösung mit Regex Sie sollten dies verwenden

using System.Text.RegularExpressions;

und der Code lautet

string var = "Hello3453232wor705Ld";
string mystr = Regex.Replace(var, @"\d", "");
string mynumber = Regex.Replace(var, @"\D", "");
Console.WriteLine(mystr);
Console.WriteLine(mynumber);

15voto

Bloggrammer Punkte 422

Hier ist eine weitere einfache Lösung mit Linq die nur die numerischen Werte aus einer Zeichenkette extrahiert.

var numbers = string.Concat(stringInput.Where(char.IsNumber));

Beispiel:

var numbers = string.Concat("(787) 763-6511".Where(char.IsNumber));

Gibt: "7877636511"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X