如何检查字符串是否为数字
本文关键字:字符串 是否 数字 检查 何检查 | 更新日期: 2023-09-27 18:02:19
我想在C#上知道如何检查字符串是否是一个数字(只是一个数字(。
例:
141241 Yes
232a23 No
12412a No
等等...
有特定的功能吗?
如果您谈论的是1
、-2
和3.14159
等数字,请查找double.TryParse()
。其他一些人建议int.TryParse()
,但这在小数上会失败。
string candidate = "3.14159";
if (double.TryParse(candidate, out var parsedNumber))
{
// parsedNumber is a valid number!
}
<小时 />编辑:正如Lukasz在下面指出的那样,在使用小数点分隔符解析数字时,我们应该注意线程文化,即这样做是为了安全:
double.TryParse(candidate, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out var parsedNumber)
如果您只想检查字符串是否都是所有数字(不在特定的数字范围内(,则可以使用:
string test = "123";
bool allDigits = test.All(char.IsDigit);
是的,有
int temp;
int.TryParse("141241", out temp) = true
int.TryParse("232a23", out temp) = false
int.TryParse("12412a", out temp) = false
希望这有帮助。
使用 Int32.TryParse()
int num;
bool isNum = Int32.TryParse("[string to test]", out num);
if (isNum)
{
//Is a Number
}
else
{
//Not a number
}
MSDN 参考
使用 int.TryParse()
:
string input = "141241";
int ouput;
bool result = int.TryParse(input, out output);
如果是,结果将是true
。
是的 - 你可以在 C# 中使用 Visual Basic。这都是 .NET;VB函数IsNumeric,IsDate等实际上是Info类的静态方法。所以这是你的代码:
using Microsoft.VisualBasic;
...
Information.IsNumeric( object );
int value;
if (int.TryParse("your string", out value))
{
Console.WriteLine(value);
}
这是我个人的最爱
private static bool IsItOnlyNumbers(string searchString)
{
return !String.IsNullOrEmpty(searchString) && searchString.All(char.IsDigit);
}
也许您正在寻找int.TryParse
函数。
http://msdn.microsoft.com/en-us/library/system.int32.tryparse.aspx
许多数据类型都有一个 TryParse-方法,如果它成功转换为该特定类型,则将返回 true,并将解析的值作为 out-参数。
在您的情况下,可能会对以下内容感兴趣:
http://msdn.microsoft.com/en-us/library/system.int32.tryparse.aspx
http://msdn.microsoft.com/en-us/library/system.decimal.tryparse.aspx
int result = 0;
bool isValidInt = int.TryParse("1234", out result);
//isValidInt should be true
//result is the integer 1234
当然,您可以检查其他数字类型,例如 decimal
或 double
.
你应该使用 TryParse 方法来获取 int
string text1 = "x";
int num1;
bool res = int.TryParse(text1, out num1);
if (res == false)
{
// String is not a number.
}
如果要验证每个字符是否为数字,并在错误消息验证过程中返回不是数字的字符,则可以循环遍历每个字符。
string num = "123x";
foreach (char c in num.ToArray())
{
if (!Char.IsDigit(c))
{
Console.WriteLine("character " + c + " is not a number");
return;
}
}
.TryPasrse(( Methode 是最好的方法所以如果值是字符串,你永远不会有异常,而不是 TryParse 方法返回给你的布尔值,这样你就会知道解析操作是成功还是失败
string yourText = "2";
int num;
bool res = int.TryParse(yourText, out num);
if (res == true)
{
// the operation succeeded and you got the number in num parameter
}
else
{
// the operation failed
}
string str = "123";
int i = Int.Parse(str);
如果str是一个有效的整数字符串,那么它将被转换为整数并存储在i其他明智的异常发生。
从 C# 7.0 开始,可以在参数中声明 out 变量 方法调用的列表,而不是在单独的变量中 声明。这会产生更紧凑、可读的代码,并且 防止无意中为变量赋值 在方法调用之前。
bool isDouble = double.TryParse(yourString, out double result);
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/out-parameter-modifier
您可以使用类似于以下代码的内容:
string numbers = "numbers you want to check";
Regex regex = new Regex("^[0-9]+$"));
if (regex.IsMatch(numbers))
{
//string value is a number
}
public static void Main()
{
string id = "141241";
string id1 = "232a23";
string id2 = "12412a";
validation( id, id1, id2);
}
public static void validation(params object[] list)
{
string s = "";
int result;
string _Msg = "";
for (int i = 0; i < list.Length; i++)
{
s = (list[i].ToString());
if (string.IsNullOrEmpty(s))
{
_Msg = "Please Enter the value";
}
if (int.TryParse(s, out result))
{
_Msg = "Enter " + s.ToString() + ", value is Integer";
}
else
{
_Msg = "This is not Integer value ";
}
}
}
试试这个
在这里,我执行 no 的添加和字符串的串联
private void button1_Click(object sender, EventArgs e)
{
bool chk,chk1;
int chkq;
chk = int.TryParse(textBox1.Text, out chkq);
chk1 = int.TryParse(textBox2.Text, out chkq);
if (chk1 && chk)
{
double a = Convert.ToDouble(textBox1.Text);
double b = Convert.ToDouble(textBox2.Text);
double c = a + b;
textBox3.Text = Convert.ToString(c);
}
else
{
string f, d,s;
f = textBox1.Text;
d = textBox2.Text;
s = f + d;
textBox3.Text = s;
}
}
我不是一个技能特别高的程序员,但是当我需要解决这个问题时,我选择了可能是一个非常不优雅的解决方案,但它适合我的需求。
private bool IsValidNumber(string _checkString, string _checkType)
{
float _checkF;
int _checkI;
bool _result = false;
switch (_checkType)
{
case "int":
_result = int.TryParse(_checkString, out _checkI);
break;
case "float":
_result = Single.TryParse(_checkString, out _checkF);
break;
}
return _result;
}
我简单地用这样称呼它:
if (IsValidNumber("1.2", "float")) etc...
这意味着我可以在 If...然后是比较,这对我来说是重要的因素。如果我需要检查其他类型,那么我会根据需要添加一个变量和一个 case 语句。
使用这个
double num;
string candidate = "1";
if (double.TryParse(candidate, out num))
{
// It's a number!
}
int num;
bool isNumeric = int.TryParse("123", out num);
namespace Exception
{
class Program
{
static void Main(string[] args)
{
bool isNumeric;
int n;
do
{
Console.Write("Enter a number:");
isNumeric = int.TryParse(Console.ReadLine(), out n);
} while (isNumeric == false);
Console.WriteLine("Thanks for entering number" + n);
Console.Read();
}
}
}
Regex.IsMatch(stringToBeChecked, @"^'d+$")
Regex.IsMatch("141241", @"^'d+$") // True
Regex.IsMatch("232a23", @"^'d+$") // False
Regex.IsMatch("12412a", @"^'d+$") // False
一些建议的解决方案的问题在于它们没有考虑各种浮点数格式。以下函数执行此操作:
public bool IsNumber(String value)
{
double d;
if (string.IsNullOrWhiteSpace(value))
return false;
else
return double.TryParse(value.Trim(), System.Globalization.NumberStyles.Any,
System.Globalization.CultureInfo.InvariantCulture, out d);
}
它假设各种浮点数样式,例如 es 小数点(英语(和十进制逗号(德语(都是允许的。如果不是这种情况,请更改数字样式参数。请注意,Any
不包括十六进制喃喃自语,因为双精度类型不支持它。