你可以使用
int parsed;
if( int.TryParse("is it a number?", out parsed) )
这是针对原始问题中的字符串的一组测试。
它使用具有指定数字样式和文化能力的重载。
[Test]
public void FalseOnStringyString()
{
var sources = new []{"test1", "test", "tes3t", "2323k"};
foreach (var source in sources)
{
int parsed;
Assert.IsFalse(int.TryParse(source, NumberStyles.Any, CultureInfo.InvariantCulture, out parsed));
}
}
[Test]
public void TrueOnNumberyString()
{
var sources = new[] { "1232", "4567" };
foreach (var source in sources)
{
int parsed;
Assert.IsTrue(int.TryParse(source, NumberStyles.Any, CultureInfo.InvariantCulture, out parsed));
}
}
另一种解决方案是使用正则表达式。
但是在这种情况下,该方法不会输出数字。
[Test]
public void TrueOnNumberyStringRegex()
{
var sources = new[] { "1232", "4567" };
var isNumber = new Regex(@"^\d+$");
foreach (var source in sources)
{
Assert.IsTrue(isNumber.IsMatch(source));
}
}
[Test]
public void FalseOnNumberyStringRegex()
{
var sources = new[] { "test1", "test", "tes3t", "2323k" };
var isNumber = new Regex(@"^\d+$");
foreach (var source in sources)
{
Assert.IsFalse(isNumber.IsMatch(source));
}
}