1

如何检查其他两个可能的字符串...(参见示例代码)

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
4

6 回答 6

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"

Or 与 OrElse

另一种方法是使用肯定列表和Enumerable.Contains

Dim allowedExtensions = { ".abc", ".xyz" }
If allowedExtensions.Contains(extension) Then
    ' ...
于 2013-06-24T08:09:56.897 回答
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   

这样,您支持多少扩展或对列表进行了哪些更改都无关紧要,您只需更改主字符串以使代码正常工作。

另外,如果您决定让用户更改支持的文件类型,您可以通过编程方式进行更改。

于 2013-06-24T08:18:06.420 回答
1

@Tim Schmelter 已经非常彻底地回答了这个问题,但是:-

一个简单的替代方法是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
于 2013-06-24T08:14:47.913 回答
0

尝试:

If extension = ".abc" Or extension = ".xyz" Then
于 2013-06-24T08:08:42.870 回答
0

我想你想改变一行:

If extension = ".abc" Or extension = ".xyz" Then
于 2013-06-24T08:10:42.920 回答
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 条件会上升,这会影响代码的易读性和可维护性。因此,此代码片段为您提供了更多的可读性。

于 2013-06-24T08:17:15.150 回答