Regex.Split
, digitsRegex.Split
can extract numbers from strings. We get all the numbers that are found in a string
. Ideal here is the Regex.Split
method with a delimiter code.
We describe an effective way to get all positive ints. For floating point numbers, or negative numbers, another solution will be needed.
Let us first consider the input and output of our Regex.Split
call. We want to extract digit sequences of 1 or more chars. This leaves us with numbers (in a string
array).
ABC 4: 3XYZ 10 Results = 4 3 10
The const
input string
has 4 numbers in it: they are one or two digits long. To acquire the numbers, we use the format string
"\D+" in the Regex.Split
method.
System.Text.RegularExpressions
namespace is included.Regex.Split
method will return the numbers in string
form. The result array may also contain empty strings.string.IsNullOrEmpty
method. Finally, we invoke the int.Parse
method to get integers.using System; using System.Text.RegularExpressions; const string input = "ABC 4: 3XYZ 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); } }Number: 4 Number: 3 Number: 10\D Non-digit char. + 1 or more of char.
For handling numbers in regular expressions, the "\d" and "\D" codes are important. The lowercase "d" means digit character. The uppercase means non-digit char
.
We extracted integers inside a string
. And we converted the results to ints. The Regex.Split
method is useful for this purpose. It allows flexible, complex delimiters.