Integer.TryParse - лучший способ?
Мне часто приходится использовать Integer.TryParse, чтобы проверить, является ли значение целым. Однако, когда вы используете TryParse, вам нужно передать ссылочную переменную в функцию, поэтому мне всегда нужно создать пустое целое число, которое нужно передать. Обычно это выглядит примерно так:
Dim tempInt as Integer
If Integer.TryParse(myInt, tempInt) Then
Я считаю, что это довольно громоздко, учитывая, что все, что я хочу, это простой ответ True/False. Есть ли лучший способ приблизиться к этому? Почему нет перегруженной функции, где я могу просто передать значение, которое я хочу проверить, и получить истинный/ложный ответ?
Ответы
Ответ 1
Не нужно объявлять целое число.
If Integer.TryParse(intToCheck, 0) Then
или
If Integer.TryParse(intToCheck, Nothing) Then
Если у вас есть .Net 3.5, вы можете создать метод расширения для строк.
Public Module MyExtensions
<System.Runtime.CompilerServices.Extension()> _
Public Function IsInteger(ByVal value As String) As Boolean
If String.IsNullOrEmpty(value) Then
Return False
Else
Return Integer.TryParse(value, Nothing)
End If
End Function
End Module
И затем назовите:
If value.IsInteger() Then
Извините, увлекся, я знаю, но вы также можете добавить это в класс MyExtensions выше в .Net 3.5 и не беспокоиться, если вам не нужны проверки.
<System.Runtime.CompilerServices.Extension()> _
Public Function ToInteger(ByVal value As String) As Integer
If value.IsInteger() Then
Return Integer.Parse(value)
Else
Return 0
End If
End Function
Затем просто используйте
value.ToInteger()
Это вернет 0, если это не допустимое целое число.
Ответ 2
Поскольку вы используете VB.net, вы можете использовать IsNumeric Function
If IsNumeric(myInt) Then
'Do Suff here
End If
Ответ 3
public static class Util {
public static Int32? ParseInt32(this string text) {
Int32 result;
if(!Int32.TryParse(text, out result))
return null;
return result;
}
public static bool IsParseInt32(this string text) {
return text.ParseInt32() != null;
}
}
Ответ 4
Попробуйте этот код.
Module IntegerHelpers
Function IsInteger(ByVal p1 as String) as Boolean
Dim unused as Integer = 0
return Integer.TryParse(p1,unused)
End Function
End Module
Хорошая часть состоит в том, что, поскольку она объявлена как функция уровня модуля, ее можно использовать без квалификатора. Пример использования
return IsInteger(mInt)
Ответ 5
Почему бы не написать метод расширения, чтобы очистить код? Я не писал VB.Net какое-то время, но вот пример из С#:
public static class MyIntExtensionClass
{
public static bool IsInteger(this string value)
{
if(string.IsNullOrEmpty(value))
return false;
int dummy;
return int.TryParse(value, dummy);
}
}
Ответ 6
J Ambrose Little выполнил временные тесты для IsNumeric для проверки в 2003. Возможно, вы захотите повторить указанные тесты с v2 CLR.
Ответ 7
Вариантом будет:
Int32.TryParse(input_string, Globalization.NumberStyles.Integer)