角かっこ表記の意味を誤解しているようです[...]
。文字クラスを作成します。つまり、の任意の文字である1つの文字と正確に一致し...
ます。(一致する文字をより細かく制御するための特別な構文がいくつかありますが、それが基本的な考え方です。)たとえば、次のパターンの場合は次のようになります。
^W[W{10,20}R{1}]W$
文字列は正確に3文字の長さである必要があります。最初の文字がW
;であること。2番目の文字がa W
、a {
、a 1
、a 0
、コンマ、a 2
、a }
、またはR
;であること。そして、3番目の文字は別のものW
です。
その場合、実際に書くべきものは次のとおりです。
^W+RW+$
W
文字列が1つを除いて完全にsで構成され、文字列がsR
で開始および終了することを確認しW
ます。W
(この時点で、文字列の長さが正確に22文字であることをすでに確認しているので、sの数について心配する必要はありません。)
追加するために編集:ちなみに、ユニットテストがあるのは素晴らしいことですが、メソッドのインターフェイスは非常に狭く、文字列を受け取り、一連の検証を実行し、true
またはfalse
を返すだけなので、ユニットテストにはあまり適していません。テスト。ユニットテストで、メソッドがfalse
特定の文字列に対して誤って返されることがわかった場合、何がうまくいかなかったかについての情報はほとんどないため、問題を見つけるのにあまり役立ちません。(これはすでに自分で見てきました。)さらに悪いことに、ユニットテストでメソッドが特定の文字列に対して正しく返されることがわかった場合でも、正しい理由で返されることを確認する方法はありません。false
false
。したがって、コードが正しいことを確認するのにはあまり役立ちません。これに対処する方法はいくつかあります。
- 検証ルールごとに個別のメソッドを作成して
checkFileValidLine
から、それらの各メソッドを呼び出して行を検証できます。checkFileValidLine
そうすれば、それらのメソッドの単体テストを行うことができます(これらのメソッドを呼び出して正しい結果を返すことを確認するための大まかな単体テストに加えて)。(これは私がお勧めするアプローチです。)
- 現在のメソッドと同じ検証を実行するヘルパーメソッドを作成できますが、有効な文字列と無効な文字列を返す代わりに
true
、有効な文字列と(たとえば)無効な文字列をfalse
返すことができます。ユニットテストでは、正確に正しい検証ルールがトリガーされていることを確認できますが、ヘルパーメソッドが返された場合は戻ることができます。null
"line.length != 22"
checkFileValidLine
true
null