Checking if a string ends with a number in C# is a very common operation. In this article, we are going to show various ways in which we can do this.
Check if a String Ends With a Number Using IsDigit
Perhaps the most straightforward way of checking if a string ends with a number is by using the
char.IsDigit method. We can use this method by passing in the last character of our string. This method is also pretty fast:
string inputString = "Hello1"; bool result = char.IsDigit(inputString.Last());
We can also modify this example to make it a bit faster:
bool result = char.IsDigit(inputString[^1]);
Check Using Character Comparison
A similar, yet slightly more complex method, is to again get the last character of the string and do a comparison with the
9 chars. Note that we use the digits as chars here, and not as integers, hence the apostrophes:
string inputString = "Hello1"; var lastChar = inputString.Last(); bool result = lastChar >= '0' && lastChar <= '9';
This is indeed slightly more complex, due to the comparison of characters, and also more prone to errors compared to the previous one-liner. However, it does allow one to finetune it further, e.g. by checking whether the last digit is equal to only 1, 2, or 3, but not the other digits.
Check Using Substring
The third way to check the same thing is by using the
string.Substring method to get the last character of a string. The
Substring method returns another string, to which we apply the
IEnumerable.All method to check whether all elements (chars, in this case) satisfy a certain condition (
string inputString = "Hello1"; bool result = inputString.Substring(inputString.Length - 1).All(char.IsDigit);
Even though this is slightly slower compared to the first solution, it is more flexible in that it allows us to easily get the last
n characters, simply by changing the 1 into
n. This way we can do the same check for the last
n characters. In case we take multiple characters, we might even change the
All method into
Any. This allows us to check whether there is at least one digit character in the last
Using Regex to Check if a String Ends With a Number
Another way of doing this check is by using a regular expression:
string inputString = "Hello1"; var regex = new Regex(@"\d+$"); bool result = regex.Match(inputString).Success;
What we do is quite straightforward though: We create a new
Regex checking whether the last character is a digit:
$ matches the end of a string, while
\d matches a digit. Regular expressions are extremely powerful and not only allow us to check whether a string ends with a digit, but we can easily modify it to extract that digit too. Take a look at our article about regular expressions in C# if you need to learn more or refresh your memory about it.
This method is also extremely fast, similar to doing the same using the last character and applying the
IsDigit method on it.
In this article, we explored different methods of checking whether a string ends with a number in C#. We saw that even though all of them produce the same result, different methods might be preferred if we want to do slightly different operations.