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?
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?
Erweiterungsmethode zum Abrufen aller positiv Zahlen, die in einer Zeichenkette enthalten sind:
public static List<long> Numbers(this string str)
{
var nums = new List<long>();
var start = -1;
for (int i = 0; i < str.Length; i++)
{
if (start < 0 && Char.IsDigit(str[i]))
{
start = i;
}
else if (start >= 0 && !Char.IsDigit(str[i]))
{
nums.Add(long.Parse(str.Substring(start, i - start)));
start = -1;
}
}
if (start >= 0)
nums.Add(long.Parse(str.Substring(start, str.Length - start)));
return nums;
}
Wenn Sie auch negative Zahlen verwenden möchten, ändern Sie einfach den Code, um das Minuszeichen ( -
)
Angesichts dieser Eingabe:
"I was born in 1989, 27 years ago from now (2016)"
Das Ergebnis ist eine Nummernliste:
[1989, 27, 2016]
Ein interessanter Ansatz wird vorgestellt aquí von Ahmad Mageed, verwendet Regex und StringBuilder
um die ganzen Zahlen in der Reihenfolge zu extrahieren, in der sie in der Zeichenkette erscheinen.
Ein Beispiel mit Regex.Split
auf der Grundlage des Beitrags von Ahmad Mageed ist wie folgt:
var dateText = "MARCH-14-Tue";
string splitPattern = @"[^\d]";
string[] result = Regex.Split(dateText, splitPattern);
var finalresult = string.Join("", result.Where(e => !String.IsNullOrEmpty(e)));
int DayDateInt = 0;
int.TryParse(finalresult, out DayDateInt);
Machen Sie die Umkehrung einer der Antworten auf diese Frage: Wie entfernt man Zahlen aus einer Zeichenkette mit Regex.Replace?
// Pull out only the numbers from the string using LINQ
var numbersFromString = new String(input.Where(x => x >= '0' && x <= '9').ToArray());
var numericVal = Int32.Parse(numbersFromString);
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.