如何检查.NET中的给定字符串是否为数字?
test1 - 是字符串
1232 - 是数字
test - 是字符串
tes3t - 是字符串
2323k - 是字符串
4567 - 是数字
如何使用系统功能执行此操作?
答案 0 :(得分:32)
您可以编写一个测试每个字符的简单循环。
bool IsNumber(string s)
{
foreach (char c in s)
{
if (!Char.IsDigit(c))
return false;
}
return s.Any();
}
或者您可以使用LINQ。
bool IsNumber(string s)
{
return s.Any() && s.All(c => Char.IsDigit(c));
}
如果您更关心字符串是否可以表示为int
类型,而不是所有字符都是数字,则可以使用int.TryParse()
。
bool IsNumber(string s)
{
int i;
return int.TryParse(s, out i);
}
注意:如果您没有开始接受人们给您的答案,您将无法获得太多帮助。
答案 1 :(得分:13)
这将检查所有字符是否为数字(仅对于非负整数才为真)
inputString.All(c => IsDigit(c));
您也可以尝试正则表达式
string pattern = "^[-+]?[0-9]*\.?[0-9]*$";
Regex.IsMatch(inputString, pattern)
答案 2 :(得分:4)
如果ontputInt值为0(零),则使用int.TryParse(inputString,out outputInt),然后它不是数字。
答案 3 :(得分:1)
您可以使用Int32.TryParse
或Int64.TryParse
尝试将字符串转换为数字。
否则,您也使用以下代码:
public Boolean IsNumber(String s)
{
foreach (Char ch in s)
{
if (!Char.IsDigit(ch)) return false;
}
return true;
}
答案 4 :(得分:1)
像这样使用int.TryParse
。
var test = "qwe";
int result;
if(int.TryParse(test, out result))
{
//if test is int you can access it here in result;
}
答案 5 :(得分:1)
对字符串使用相同的扩展方法。对于这个特定值,“123.56”的响应将取决于当前的文化。
class Program
{
static void Main(string[] args)
{
string[] Values = {"123", "someword", "12yu", "123.56" };
foreach(string val in Values)
Console.WriteLine(string.Format("'{0}' - Is number?: {1}",val, val.IsNumber()));
}
}
public static class StringExtension
{
public static bool IsNumber(this String str)
{
double Number;
if (double.TryParse(str, out Number)) return true;
return false;
}
}
答案 6 :(得分:1)
我们走了:
public static class StringExtensions
{
public static bool IsDigits(this string input)
{
return input.All(c => !c.IsDigit());
}
public static bool IsDigit(this char input)
{
return (input < '0' || input > '9');
}
}
使用以下方法调用时,它应返回true:
var justAString = "3131445";
var result = justAString.IsDigits();
答案 7 :(得分:0)
答案 8 :(得分:0)
您可以使用
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));
}
}
答案 9 :(得分:0)
//public static bool IsAlphaNumeric(string inputString)
//{
// bool alpha = false;
// bool num = false;
// int l;
// try
// {
// foreach (char s in inputString )
// {
// if (!char.IsDigit(s))
// {
// alpha = true;
// }
// else
// {
// num = true;
// }
// }
// if (num == true && alpha == true)
// {
// return true;
// }
// else
// {
// return false;
// }
// }
// catch
// {
// return false;
// }
//}