0

バリエーションで入力する必要があるテキストボックスがあります。入力はデータベーステーブルの拡張列用であり、数値は文字列として取得されます。入力条件は次のとおりです。

  1. 5028 のような 1 つの入力のみ
  2. 5028-5090 のようにハイフン (-) で区切って入力してください。
  3. 5028,5029 のようにコンマ(,)で区切って入力してください。
  4. 5029,1234-4567,9876 のように、単一の入力で区切られた個々のハイフンとコンマを含む入力。

1 つの入力、ハイフンで区切られた入力、コンマで区切られた入力のみのクエリの形成条件を個別に記述しました..今、私の必要に応じて、5029,1234-4567 のような入力のクエリをフォーマットする必要がある条件を記述する必要があります。 9876 しかし、私は正確なロジックを取得していません..

これが私のコードです..

if (extension != "") {
    if (extension.contains(",")) {
        query = query.concat(" and (extension='");
        String extn[] = extension.split(",");
        for (int i = 0; i < extn.length; i++) {
            System.out.println(extn[i]);
            query = query.concat(extn[i]).concat("'").concat(" or extension='");
            System.out.println(query);
        }
        query = query.substring(0, query.length() - 15);
        System.out.println(query);
        query = query.concat(")");
        System.out.println(query);
    } else if (extension.contains("-")) {
        query = query.concat(" and cast(extension as signed) >=");
        String extn[] = extension.split("-");
        for (int i = 0; i < extn.length; i++) {
            System.out.println(extn[i]);
            query = query.concat(extn[i]).concat(" And cast(extension as signed) <=");

        }
        query = query.substring(0, query.length() - 33);
        System.out.println(query);

    } else {
        query = query.concat(" and extension='" + extension).concat("'");
        System.out.println(query);
    }
}

みんな助けてください..よろしくお願いします。

4

1 に答える 1

1

if (extension != "") 次の変更を行います。if (!extension.equals(""))

  1. 最初のif条件ブロックif (extension.contains(","))で、String extn[] = extension.split(",");各文字列extn []を「-」で再度分割し、他のプロセスを実行します

これを試して

if (!extension.equals("")) {
if (extension.contains(",")) {
    query = query.concat(" and (extension='");
    String extn[] = extension.split(",");
    for(int k=0; k <extn.length; k++){
    if(extn[k].contains("-")){
        String subExtn[] = extn[k].split("-");
        for (int i = 0; i < subExtn.length; i++) {
            //System.out.println(subExtn[i]);
            query = query.concat(subExtn[i]).concat("'").concat(" or extension='");

        }

    }else{
        //for (int i = 0; i < extn.length; i++) {
           // System.out.println(extn[i]);
            query = query.concat(extn[k]).concat("'").concat(" or extension='");
          //  System.out.println(query);
        //}
    }
    //System.out.println(query);
    }
    query = query.substring(0, query.length() - 15);
   // System.out.println(query);
    query = query.concat(")");
    System.out.println(query);
} else if (extension.contains("-")) {
    query = query.concat(" and cast(extension as signed) >=");
    String extn[] = extension.split("-");
    for (int i = 0; i < extn.length; i++) {

        query = query.concat(extn[i]).concat(" And cast(extension as signed) <=");

    }
    query = query.substring(0, query.length() - 33);
    System.out.println(query);

} else {
    query = query.concat(" and extension='" + extension).concat("'");
    System.out.println(query);
}
}
于 2013-10-27T07:24:27.940 に答える