如何检查其他两个可能的字符串...(参见示例代码)
Imports System.IO
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Input path.
Dim p As String = TextBox1.Text
' Get extension.
Dim extension As String = Path.GetExtension(p)
If extension = ".abc" Or ".xyz" Then
'nothing
Label1.Text = "file type suported"
Else
Label1.Text = "Unsuported file type"
End If
End Sub
End Class
答案 0 :(得分:4)
只需添加条件:
If extension = ".abc" OrElse extension = ".xyz" Then
'nothing
Label1.Text = "file type suported"
Else
Label1.Text = "Unsuported file type"
End If
我使用过OrElse
因为只有在第一个条件返回false时才检查第二个条件。出于同样的原因,您通常应使用AndAlso
代替And
。
考虑这个例子:
Dim extension As String = Nothing
If extension Is Nothing Or extension.ToLower() = ".abc"
' ...
这会引发异常,因为extension
只是Or
导致无论如何都要评估第二个条件。这很安全:
If extension Is Nothing OrElse extension.ToLower() = ".abc"
另一个方法是使用肯定列表和Enumerable.Contains
:
Dim allowedExtensions = { ".abc", ".xyz" }
If allowedExtensions.Contains(extension) Then
' ...
答案 1 :(得分:2)
您也可以将支持的扩展名放在字符串
中Dim ValidExtensions As String = ".abc.xyz"
然后
If ValidExtensions.Contains(extension) Then
Label1.Text = "file type suported"
Else
Label1.Text = "Unsuported file type"
End If
这样,您支持的扩展数量或对列表所做的更改无关紧要,只需更改主代码即可使代码生效。
如果您决定让用户更改支持的文件类型,您可以以编程方式进行更改。
答案 2 :(得分:1)
一个简单的替代方法是Select
语句 - 如果您决定在将来支持某些其他文件类型,这将使您更容易更新代码:
Dim extension As String = Path.GetExtension(p)
Select Case extension
Case ".abc", ".xyz"
Label1.Text = "file type suported"
Case Else
Label1.Text = "unsupported file type"
End Select
答案 3 :(得分:0)
尝试:
If extension = ".abc" Or extension = ".xyz" Then
答案 4 :(得分:0)
我想你想改变一行:
If extension = ".abc" Or extension = ".xyz" Then
答案 5 :(得分:0)
将所有支持的扩展名存储在HashSet<string>
结构中,并使用Contains
方法检查是否支持指定的扩展名。
Imports System.IO
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim supportedExtensions As New System.Collections.Generic.HashSet(Of String)
supportedExtensions.Add(".abc")
supportedExtensions.Add(".xyz")
' Input path.
Dim p As String = TextBox1.Text
' Get extension.
Dim extension As String = Path.GetExtension(p)
If (supportedExtensions.Contains(extension)) Then
'nothing
Label1.Text = "file type suported"
Else
Label1.Text = "Unsuported file type"
End If
End Sub
End Class
更新:随着支持的扩展数量的增加,扩展支持检查所需的OR条件会上升,这会影响代码的易读性和可维护性。因此,此代码段为您提供了更多可读性。