Extract number at end of string in C#
.net, c#, parsing, regex
Solution
Use this regular expression:
\d+$
// RegexOptions.RightToLeft – is optional, but will increase performance
var result = Regex.Match(input, @"\d+$", RegexOptions.RightToLeft).Value;
or one-liner without regex:
var result = input[^input.Reverse().TakeWhile(char.IsDigit).Count()..];
or more efficient way:
int numberOfDigitsAtEnd = 0;
for (var i = input.Length - 1; i >= 0; i--)
{
if (!char.IsDigit(input[i]))
{
break;
}
numberOfDigitsAtEnd++;
}
var result = input[^numberOfDigitsAtEnd..];
Problem
Probably over analysing this a little bit but how would stackoverflow suggest is the best way to return an integer that is contained at the end of a string. Thus far I have considered using a simple loop, LINQ and regex but I'm curious what approaches I'll get from the community. Obviously this isn't a hard problem to solve but could have allot of variance in the solutions. So to be more specific, how would you create a function to return an arbitrarily long integer/long that is appended at the end of an arbitrarily long string? ``` CPR123 => 123 ABCDEF123456 => 123456 ```