Boo*_*Boy 12 vb.net casting compact-framework
有没有更好的方法来测试字符串是否可以转换为除以下之外的整数?
Public Function IsInt(ByVal value As Object) As Boolean
Try
Dim temp As Integer = CInt(value)
Return True
Catch ex As Exception
Return False
End Try
End Function
Run Code Online (Sandbox Code Playgroud)
通过"更好"我的意思是更简洁和/或没有例外.
TryParse将是要走的路,但我正在使用紧凑的框架2.0和tryparse似乎没有实现....
不管怎么说,多谢拉.
似乎MarkJ是正确的,上面似乎在功能上与IsNumeric相同,所以我想这是我的答案.我不知道为什么我认为CInt比IsNumeric更严格.我想最好使用CInt和IsNumeric进行测试,因为那是我用来进行转换的功能吗?
Geo*_*ord 14
您可以使用内置的IsNumeric函数
Dim CanConvert as Boolean = IsNumeric(value)
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/6cd3f6w1(VS.71).aspx
由于Compact Framework 不支持 TryParse ,因此正则表达式是您的下一个最佳选择.
第一个示例不允许小数.第二个是.
Regex.IsMatch(value, "^-?\d+$")
Regex.IsMatch(value, "^-?\d+(?:\.\d+)?$")
Run Code Online (Sandbox Code Playgroud)
如果你需要允许科学记数法,你需要再调整一下.它真的不是那么糟糕.你有^一个字符串的开头,一个可选的短划线-?,一个或多个数字\d+,一个(?:)寻找单个小数点\.和一个或多个数字的非捕获组\d+.另一个?允许非捕获组的零个或一个实例,然后是字符串的结尾$.
编辑:
我之前没有考虑过的一件事:这个方法有点不精确,因为你可以获得一个非常庞大的数字,它在数字上是一个有效的整数但不能转换为Int32.如果这是可能的话,你可以限制字符数.例如\d+,你可以做\d{1,8},而不是.
Public Function IsInt(ByVal value As Object) As Boolean
Dim i As Integer
Return Integer.TryParse(Convert.ToString(value), i)
End Function
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16491 次 |
| 最近记录: |