2012-02-14 48 views
4

視覚的な基本を使用して、私は文字列を持っています。文字列に大文字の英字が1つ続けてピリオドが含まれていることを確認したい次のようにContainsを使用しようとしました:VB.NET文字列にアルファベット文字と。が含まれているかどうかを確認するにはどうすればいいですか?

someString.Contains( "[A-Z]。")しかし、これは私が望むものを返しませんでした。

また、1つの番号の後にピリオドを付ける必要があります。

は、どのように私はVisual Basicでこれを行うことができます

あなたはこのためにテストするための正規表現を作成(またはあなたが必要なもの。その後regex.match呼び出しん正規表現のためのgoogleできる

答えて

7

ロジックが少しオフ最高の定格の答えです。関数は最初の文字を検証してからtrueを返します。アルファベット文字列全体を検証する調整があります:

1

Regex.Match(inputString, "regex") 
+0

Visual Basicで正規表現を作成するにはどうすればよいですか? – user840930

+0

正規表現の文字列を二重引用符で囲みます。 RegexはSystem.Text.RegularExpression名前空間の一部です。それは2つの値をとります。入力文字列と正規表現の文字列 – Brian

+0

私は試しました:Dim rowHeaderRegex Regex = New Regex( "([AZ] |。| \?)") Dim M As Match = rowHeaderRegex.Match(rowName) "A. SomeString"ではなく "1" 。SomeString "も成功を返しました。それは数字を除外するために異なる必要がありますか? – user840930

1

ワン解決策は、あなたがアルファベットに合わせて、次の正規表現をチェックすることができます。正規表現を使用することです。そして、私は上記をテストしていない?

([A-Z]|.|\?) 

2

私は簡単な解決策を持っています。しかし、解決策はエレガントではありません。最初に "A."、 "B."から "Z."までの文字列を作成することができます。

したがって、テストする文字列がMyString変数に含まれているとします。 MyStringを "A"でテストできます。 String.IndexOfメソッドを使用して文字列を返します。戻り値が負でない場合は、 "A." MyStringに存在しました。 "B"、 "C"を続ける。 "Z"まで。整数に対しても同じ方法を繰り返すことができます。つまり、「0」、「1」です。 "9."まで。

10

この機能を使用:

Function CheckForAlphaCharacters(ByVal StringToCheck As String) 


    For i = 0 To StringToCheck.Length - 1 
     If Char.IsLetter(StringToCheck.Chars(i)) Then 
      Return True 
     End If 
    Next 

    Return False 

End Function 

使用

Dim Mystring As String = "abc123" 
    If CheckForAlphaCharacters(Mystring) Then 
     'do stuff here if it contains letters 
    Else 
     'do stuff here if it doesn't contain letters 
    End If 
+0

ねえ、これはちょうど私にとって非常に有用であることが判明しました。ありがとう! –

1

私は名前を見ているように空白のチェックを追加しました。文字列に空白がある場合はfalseを返しません。

'Validates a string of alpha characters 
    Function CheckForAlphaCharacters(ByVal StringToCheck As String) 
     For i = 0 To StringToCheck.Length - 1 
      If Not Char.IsLetter(StringToCheck.Chars(i)) Then 
       If Not Char.IsWhiteSpace(StringToCheck.Chars(i)) Then 
        Return False 
       End If 
      End If 
     Next 

     Return True 'Return true if all elements are characters 

エンド機能

5

私はあなたがチェックしたいすべてのthats場合、私は、文字列の文字があったかどうかをチェックでき、別の方法を持っていると信じています。ランダムな文字列があるとします。 "12312H231"の例では、string.tolower = string.toupperを使用した場合、 "12312h231"という文字が入っているため、この文字列はこれと同じではありません。文字がある場合はfalse、数値のみの場合はtrueとなります。

if string1.toupper = string1.tolower then 
'string1 is a number 
else 
'string1 contains a letter 
end if 
1

明らかに私はここに投票したりコメントすることはできません。しかし、RegExの回答は、この問題のはるかに簡単で最良の解決策です。たとえば、文字列が数値かアルファか英数字かミックスかをテストする必要がある場合は、この解決策を実行します。ある一桁に続いて、その後"[A-Z][a-z]*" 2桁、1つの大文字、6つの小文字:文字列が数値のみを使用し、ミックス・ケース可"[0-9]*" アルファだけすべて大文字"[A-Z]*" アルファがある場合

テスト「3」または「7」:"[0-9]{2}[A-Z][a-z]{6}[3,7]"

は、例えば、文字列が2つの文字で始まり、7桁で終了するかどうか、このステートメント試験は:で、

System.Text.RegularExpressions.Regex.ismatch(Fields!YourStringToTest.Value,"[A-Z][a-z]{2}[0-9]{7}") 
1

FYI(これはSSRSから取られます) VBA、私たちはn下位文字にはLcase、上段文字にはUcaseを使用します。

If Lcase(String1) = Ucase(String2) then 
Msgbox " Numbers" 

Else 
Msgbox " Alphabets" 

End if 
関連する問題