Int.Parse, строка ввода не была в правильном формате
Как бы я разобрал пустую строку? int.Parse(Textbox1.text)
дает мне ошибку:
Строка ввода не была в правильном формате.
System.FormatException: строка ввода не была в правильном формате.
Если текст пуст (Textbox1.text = ''
), он выдает эту ошибку. Я понимаю эту ошибку, но не знаю, как ее исправить.
Ответы
Ответ 1
Если вы ищете по умолчанию 0 в пустое текстовое поле (и выбрасываете исключение на плохо отформатированный ввод):
int i = string.IsNullOrEmpty(Textbox1.Text) ? 0 : int.Parse(Textbox1.Text);
Если вы ищете по умолчанию 0 с любым плохо отформатированным вводом:
int i;
if (!int.TryParse(Textbox1.Text, out i)) i = 0;
Ответ 2
Хорошо, что вы хотите, чтобы результат был? Если вы просто хотите проверить ввод, используйте int.TryParse
:
int result;
if (int.TryParse(Textbox1.Text, out result)) {
// Valid input, do something with it.
} else {
// Not a number, do something else with it.
}
Ответ 3
if(!String.IsNullOrEmpty(Textbox1.text))
var number = int.Parse(Textbox1.text);
Или даже лучше:
int number;
int.TryParse(Textbox1.Text, out number);
Ответ 4
Попробуйте следующее:
int number;
if (int.TryParse(TextBox1.Text, out number))
{
//Some action if input string is correct
}
Ответ 5
Вы также можете использовать метод расширения, например:
public static int? ToNullableInt32(this string s)
{
int i;
if (Int32.TryParse(s, out i)) return i;
return null;
}
Здесь ссылка: Как разобрать строку в nullable int в С# (.NET 3.5)
Ответ 6
Если ввод является числом или пустой строкой, это будет работать. Он вернет ноль, если строка пуста, иначе вернет фактическое число.
int.Parse("0"+Textbox1.Text)
Ответ 7
вы можете обернуть его простым try/catch
...