Я хочу знать на С#, как проверить, является ли строка числом (и просто числом).
Пример:
141241 Yes
232a23 No
12412a No
и т.д.
Существует ли определенная функция?
Я хочу знать на С#, как проверить, является ли строка числом (и просто числом).
Пример:
141241 Yes
232a23 No
12412a No
и т.д.
Существует ли определенная функция?
Посмотрите double.TryParse()
, если вы говорите о таких цифрах, как 1
, -2
и 3.14159
. Некоторые другие предполагают int.TryParse()
, но это произойдет с ошибкой.
double num;
string candidate = "1";
if (double.TryParse(candidate, out num))
{
// It a number!
}
EDIT: Как указывает Лукас ниже, мы должны помнить культуру потока при разборе чисел с десятичным разделителем, т.е. сделать это безопасным:
double.TryParse(candidate, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out num)
Если вы просто хотите проверить, является ли строка всеми цифрами (не находясь в определенном диапазоне номеров), вы можете использовать:
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
}
Используйте int.TryParse()
:
string input = "141241";
int ouput;
bool result = int.TryParse(input, out output);
результат будет true
, если бы он был.
Yep - вы можете использовать Visual Basic один в С#. Это все .NET; функции VB IsNumeric, IsDate и т.д. являются фактически статическими методами Информационный класс. Итак, вот ваш код:
using Microsoft.VisualBasic;
...
Information.IsNumeric( object );
int value;
if (int.TryParse("your string", out value))
{
Console.WriteLine(value);
}
Возможно, вы ищете функцию int.TryParse
.
http://msdn.microsoft.com/en-us/library/system.int32.tryparse.aspx
У многих типов данных есть метод TryParse, который вернет true, если ему удастся успешно преобразовать этот тип, с анализируемым значением как out-parameter.
В вашем случае это может представлять интерес:
http://msdn.microsoft.com/en-us/library/system.int32.tryparse.aspx
http://msdn.microsoft.com/en-us/library/system.decimal.tryparse.aspx
Это мой личный фаворит
private static bool IsItOnlyNumbers(string searchString)
{
return !String.IsNullOrEmpty(searchString) && searchString.All(char.IsDigit);
}
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 str = "123";
int i = Int.Parse(str);
Если str является допустимой целочисленной строкой, то она будет преобразована в целое и сохранена в другом случае. Исключение возникает.
Если вы хотите проверить, является ли каждый символ цифрой, а также возвращать символ, который не является цифрой, как часть проверки сообщения об ошибке, то вы можете прокручивать каждый char.
string num = "123x";
foreach (char c in num.ToArray())
{
if (!Char.IsDigit(c))
{
Console.WriteLine("character " + c + " is not a number");
return;
}
}
int.TryPasrse() Methode - лучший способ поэтому, если значение было строкой, у вас никогда не будет исключения, вместо TryParse Methode вернется к вам значение bool, чтобы вы знали, что операция синтаксического анализа выполнена успешно или неудачна.
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 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 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);
}
Предполагается, что разрешены различные стили числа с плавающей запятой, такие как десятичная точка (английский) и запятая decima (немецкий). Если это не так, измените параметр number styles. Обратите внимание, что Any
содержит не include hex mumbers, поскольку тип double не поддерживает его.