Integer.TryParse - 更好的方法吗?

发布于 2024-07-11 12:27:35 字数 288 浏览 8 评论 0原文

我发现自己经常需要使用 Integer.TryParse 来测试某个值是否是整数。 然而,当你使用 TryParse 时,你必须向函数传递一个引用变量,所以我发现自己总是需要创建一个空白整数来传入。通常它看起来像这样

Dim tempInt as Integer
If Integer.TryParse(myInt, tempInt) Then

:想要是一个简单的“真/假”响应。 有更好的方法来解决这个问题吗? 为什么没有一个重载函数,我可以只传递我想要测试的值并获得真/假响应?

I find myself often needing to use Integer.TryParse to test if a value is an integer. However, when you use TryParse, you have to pass a reference variable to the function, so I find myself always needing to create a blank integer to pass in. Usually it looks something like:

Dim tempInt as Integer
If Integer.TryParse(myInt, tempInt) Then

I find this to be quite cumbersome considering that all I want is a simple True / False response. Is there a better way to approach this? Why isn't there an overloaded function where I can just pass the value I want to test and get a true / false response?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

手长情犹 2024-07-18 12:27:35

无需声明整数。

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

抱歉,我知道我有点得意忘形,但您也可以将其添加到 .Net 3.5 中上面的 MyExtensions 类中,除非您需要验证,否则不用担心。

<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()

This will return 0 if it isn't a valid Integer.

No need to declare the integer.

If Integer.TryParse(intToCheck, 0) Then

or

If Integer.TryParse(intToCheck, Nothing) Then

If you have .Net 3.5 ability you can create an extension method for strings.

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

And then call like:

If value.IsInteger() Then

Sorry, getting carried away I know, but also you can add this to the MyExtensions class above in .Net 3.5 and not worry unless you need validations.

<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

Then simply use

value.ToInteger()

This will return 0 if it isn't a valid Integer.

伴我心暖 2024-07-18 12:27:35

由于您使用的是 VB.net,因此您可以使用 IsNumeric 函数

If IsNumeric(myInt) Then
    'Do Suff here
End If

Since you are using VB.net you can use the IsNumeric Function

If IsNumeric(myInt) Then
    'Do Suff here
End If
刘备忘录 2024-07-18 12:27:35
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;
    }

}
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;
    }

}
云归处 2024-07-18 12:27:35

试试这个代码。

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)

Try this code.

Module IntegerHelpers

  Function IsInteger(ByVal p1 as String) as Boolean
    Dim unused as Integer = 0
    return Integer.TryParse(p1,unused)
  End Function
End Module

The nice part is that since it's declared as a Module level function it can be used without a qualifier. Example Usage

return IsInteger(mInt)
慈悲佛祖 2024-07-18 12:27:35

为什么不编写一个扩展方法来清理你的代码呢? 我已经有一段时间没有编写 VB.Net 了,但这里有一个 C# 示例:

public static class MyIntExtensionClass
{
  public static bool IsInteger(this string value)
  {
    if(string.IsNullOrEmpty(value))
      return false;

    int dummy;
    return int.TryParse(value, dummy);
  }
}

Why not write an extension method to clean up your code? I haven't written VB.Net for a while, but here is an example in c#:

public static class MyIntExtensionClass
{
  public static bool IsInteger(this string value)
  {
    if(string.IsNullOrEmpty(value))
      return false;

    int dummy;
    return int.TryParse(value, dummy);
  }
}
叶落知秋 2024-07-18 12:27:35

J Ambrose Little 表演2003 年 IsNumeric 检查的时序测试。 您可能希望使用 CLR v2 重试上述测试。

J Ambrose Little performed timing tests for IsNumeric checks back in 2003. You may wish to retry the mentioned tests with v2 of the CLR.

伤感在游骋 2024-07-18 12:27:35

一种变化是:

Int32.TryParse(input_string, Globalization.NumberStyles.Integer)

A variation would be:

Int32.TryParse(input_string, Globalization.NumberStyles.Integer)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文