Verificación válida de nombre de archivo. ¿Cuál es la mejor manera?

Ver tema de la postulación para la pregunta.

1) Recuerdo haber visto una opción realmente genial en VB.NET usando LINQ para coincidir usando "LIKE% '

2) Sé que las expresiones regulares funcionarán y sospecho que resultará en el código más corto y que probablemente no será demasiado difícil de leer para una prueba tan simple.

Esto es lo que hice. Advertencia: lo vas a odiar.

<code>Private Shared Function FileNameIsOk(ByVal fileName As String) As Boolean

    For Position As Integer = 0 To fileName.Length - 1

        Dim Character As String = fileName.Substring(Position, 1).ToUpper
        Dim AsciiCharacter As Integer = Asc(Character)

        Select Case True

            Case Character = "_" 'allow _
            Case Character = "." 'allow .
            Case AsciiCharacter >= Asc("A") And AsciiCharacter <= Asc("A") 'Allow alphas
            Case AsciiCharacter >= Asc("0") AndAlso AsciiCharacter <= Asc("9") 'allow digits

            Case Else 'otherwise, invalid character
                Return False

        End Select

    Next

    Return True

End Function
</code>

Respuestas a la pregunta(11)

Su respuesta a la pregunta