扫描数字字符串

use*_*504 0 c#

我有一个带有单词和数字的字符串.如何找到最后一个数字(位数未知)并将其隔离?直到现在我使用了Substring方法,但是文本中数字的位置以及数字的长度是未知的.

谢谢!

p.s*_*w.g 7

这是使用正则表达式的简单解决方案:

var number = Regex.Match(input, @"(.*\D|^)(\d+)").Groups[2].Value;
Run Code Online (Sandbox Code Playgroud)

或者稍微不同的解决方案,一点点Linq投入了很好的措施:

var number = Regex.Matches(input, @"\d+").Cast<Match>().Last().Value;
Run Code Online (Sandbox Code Playgroud)

这是一个使用普通旧for循环的解决方案; 不需要Linq或正则表达式:

int start = 0, end = 0;
for (var i = input.Length - 1; i >= 0; i--) {
    if (char.IsDigit(input[i]))
    {
        end = i + 1;
        while (i >= 0 && char.IsDigit(input[i])) i--;
        start = i + 1;
        break;
    }
}
var number = input.Substring(start, end - start);
Run Code Online (Sandbox Code Playgroud)