VB.NET字符串等于“.abc”或“。xyz”

时间:2013-06-24 08:04:59

标签: .net vb.net string text

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

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

6 个答案:

答案 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"

Or versus OrElse

另一个方法是使用肯定列表和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)

@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

答案 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条件会上升,这会影响代码的易读性和可维护性。因此,此代码段为您提供了更多可读性。