1

さまざまな場所 (つまり、ステーション、スロット、サブスロット) に格納されているアイテムを検索するために SQL クエリを起動するレガシー アプリケーションを維持する必要があります。現在のクエリでは、"AND (...)" セクションがメイン クエリに追加されているため、より限定的な検索条件が動的に作成されます。

最初のifが true を返した場合 (ユーザーがデスクトップ アプリケーションのフィールドに何かを入力して Enter キーを押したことを意味します)、jTextFieldPCA のデータが内部条件のいずれかに該当するかどうかを確認する必要があります。通常、データの値は 1 桁の数字ですが、文字の場合もあります。

私が試みている正規表現はこれらですが、何かが欠けています。最初の内部条件で 6 の値、2 番目の内部条件で 6.6 の値、3 番目の内部条件で 6.6.6 の値がキャプチャされるようにするにはどうすればよいですか?

if (jTextFieldPCA.getText().compareTo("") != 0) {

            if (jTextFieldPCA.getText().matches("[A-Za-z0-9]") ) {
                strBuilder.append(" AND CAST(complist.Station AS VARCHAR) LIKE ");
            }

            if (jTextFieldPCA.getText().matches("[A-Za-z0-9]" + "." + "[A-Za-z0-9]") ) {
                strBuilder.append(" AND CAST(complist.Station AS VARCHAR) + '.' + CAST(complist.Slot AS VARCHAR) LIKE ");
            }

            if (jTextFieldPCA.getText().matches("[A-Za-z0-9]" + "." + "[A-Za-z0-9]" + "." + "[A-Za-z0-9]") ) {
                strBuilder.append(" AND CAST(complist.Station AS VARCHAR) + '.' + CAST(complist.Slot AS VARCHAR) + '.' + CAST(complist.SubSlot AS VARCHAR) LIKE ");
            }
(...)

前もって感謝します、

グルドヴィヒ

4

2 に答える 2

1

ドット文字の直前に円記号を追加します

jTextFieldPCA.getText().matches("[A-Za-z0-9]" + "\\." + "[A-Za-z0-9]")
于 2012-12-12T11:03:34.637 に答える
0

ポイントは正規表現の特殊な文字 (任意の数字を意味します) であり、エスケープする必要があります

 "[A-Za-z0-9]" + "\\." + "[A-Za-z0-9]"

定義済みの文字クラス 正規表現パターンのセクションを見てください。

于 2012-12-12T11:05:04.810 に答える