问题描述
|
鉴于:
Test123
Test 23
Test 456
有什么方法可以获取数字(在末尾)并放置在数字变量中?
解决方法
var re = new Regex(@\"(\\d+)$\");
(new List<String>(new[]{
\"Test123\",\"Test 123\",\"Test:123\"
})).ForEach(t =>
{
var m = re.Match(t);
Int32 n = Int32.Parse(m.Captures[0].Value);
Console.WriteLine(\"{0} => Found: {1}\",t,n);
});
输出:
Test123 => Found: 123
Test 123 => Found: 123
Test:123 => Found: 123
演示:http://www.ideone.com/JGgEd
,使用正则表达式(如\\d+$
)-这将匹配字符串末尾的所有数字。
,这是一种方法:
char[] nonZeroDigits = new char[] { \'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\' };
int numberStart = value.IndexOfAny(nonZeroDigits);
int result = 0;
if (numberStart != -1)
int.TryParse(value.Substring(numberStart),out result);
,就像Oded所说的那样
int i = Regex.IsMatch(input,@\"\\d+$\") ? Convert.ToInt32(Regex.Match(input,@\"\\d+$\").Value) : 0;
,奥德的答案是好的。这是使用LINQ的非正则表达式答案:
string s = \"Test 123\";
string remainingNums = new string(s.SkipWhile(c => !Char.IsNumber(c)).ToArray());
int asInt = 0;
bool succeeded = int.TryParse(remainingNums,out asInt);
,您可以使用Char.IsNumber
方法查找数字子字符串,然后可以使用int.Parse