如何通过可读代码获取字符串中最长数字后缀所代表的数字,而无需编写编程风格算法?
e.g。
GetNumericalSuffix("Number=350") => 350,
"Num-30" => 30
"My21" => 21
等
答案 0 :(得分:6)
var result = int.Parse(new string(input.Reverse()
.TakeWhile(char.IsDigit)
.Reverse()
.ToArray()));
答案 1 :(得分:3)
public static int GetNumericalSuffix(string str)
{
Match match = Regex.Match(str, "[^0-9]*([0-9]+)$");
if (!match.Success)
return -1;
return int.Parse(match.Groups[1].Value);
}
答案 2 :(得分:2)
简单回答:
var x = "various text 1234";
var digits = x.Reverse().TakeWhile(c => char.IsDigit(c));
var number = new string(digits.Reverse().ToArray());
答案 3 :(得分:0)
下面的想法,自己编写代码:
Char.IsDigit(currentChar)
- 开始填写其他字符数组 - numericChars
Char.IsDigit() == false
- 从numericChars
创建字符串时,请执行Int32.TryParse()
最后,您最终找到所有找到的数字的列表,只找到最大的数字。
答案 4 :(得分:0)
您可以使用正则表达式执行此操作:
MatchCollection m = Regex.Matches("Number=350", "\\d+");
int biggestMatch = 0;
foreach (Match match in m)
{
if (int.Parse(match.Value) > biggestMatch)
{
biggestMatch = int.Parse(match.Value);
}
}