Char.IsDigit метод (String, Int32)
Указывает, является ли символ в указанной позиции в указанной строке классифицируется как десятичного знака ,
Link
Int32.TryParse Метод
Преобразует строковое представление числа его 32-битовое целое число эквивалент. Возвращаемое значение указывает, была ли операция успешной. Этот член перегружен.
Link
Edit:
Сначала я писал, что вы можете пропустить любую из проверки, но теперь я пишу, что вы не можете, потому что
if (Char.IsDigit(myStr[2]) && Int32.TryParse(myStr[2].ToString(), out num1) == false)
{ }
Char.IsDigit()
вернется true
если myStr[2]
содержит любой из символов Юникода, перечисленных here, но Int.TryParse()
не преобразует никакие числа, кроме 0-9 (не уверен в этом, так как у меня есть не проверил все из них), так что он будет возвращать false
, который вы проверяете ...
условие вы проверяете можно понять на следующем примере:
string x = "AS௭s";
int s = 0;
if (Char.IsDigit(x[2]) && int.TryParse(x[2].ToString(), out s) == false)
{
// even if '௭` is Tamil Digit Seven and 'Char.IsDigit()' will return true but
// int.TryParse() will return false because it can not convert it
// so you are setting valid = false when the myStr contains a valid Unicode Character
// for a digit but It can not be converted to integer by TryParse method...
valid = false;
}
@Marc Gravell♦'s
ответ является лучшим решением для проверяя это условие ...
Может быть, я что-то очевидное отсутствует, но я не могу работать, какое значение для 'myStr [2]' 'вызовет Char.IsDigit (myStr [2]) ', чтобы быть истинным, и' Int32.TryParse (myStr [2] .ToString(), out num1) 'будет false. И.Е. Это цифра от 0 до 9, но не может быть проанализирована как целое число. –
@BenRobinson см. Ответы – thumbmunkeys
Каков тип 'myStr'? это «строка»? –