2017-03-08 10 views
-1

私は以下に列挙されている3つのうちPIN番号=、のリストを持っている:すべてのPIN番号を持っているFalse 指定されたPIN番号に文字が含まれている場合はtrueを返します。そうでない場合はfalse?

  • "12 671 C04 029"
  • を返す必要があります

    1. "12 171H01 003"True
    2. "12 371 04 003"を返す必要がありますそれらの間のスペース。中には少なくとも1人のキャラクターがいます。

      PIN番号のいずれかに文字が含まれている場合はtrueを返し、そうでない場合はfalseを返します。

      以下の機能が動作していません。渡されたPIN番号に文字があるかどうかにかかわらず、falseを返します。

      私が間違っていることは何ですか?

      Public Function FoundChar(ByVal strPIN As String) As Boolean 
      
          Dim Pattern As String = "[a-zA-Z]" 
          Dim reg As New Regex(Pattern) 
      
          Return reg.IsMatch(strPID) 
      
      End Function 
      
    +0

    それらにはすべて文字が含まれています。私はあなたが "文字"ではなく "文字"を意味すると仮定します。あなたは 'Regex'を使わずに' strPin.Any(Function(c)Char.IsLetter(c)) 'を使うことができます。 – jmcilhinney

    +1

    このような意味ですか? Dim C = '12 171H01 003 ' strPin.Any(Function(c)Char.IsLetter(c))の場合は? – Tairoc

    +0

    いいえ、私はあなたのメソッド内のすべてのコードを取り除き、私が提供した式を返すことを意味します。 – jmcilhinney

    答えて

    0

    あなたのコードは正常に動作します:

    Sub Main 
        Console.WriteLine(FoundChar("12 171H01 003")) 'True 
        Console.WriteLine(FoundChar("12 371 04 003")) 'False 
        Console.WriteLine(FoundChar("12 671 C04 029")) 'True 
    End Sub 
    
    Public Function FoundChar(ByVal strPIN As String) As Boolean 
    
        Dim Pattern As String = "[a-zA-Z]" 
        Dim reg As New Regex(Pattern) 
    
        Return reg.IsMatch(strPIN) 
    
    End Function 
    

    唯一の違いは、あなたのコードのタイプミスだった - あなたはstrPID代わりのstrPINを持っていました。

    +0

    ご協力いただきありがとうございます – Tairoc

    関連する問題