0

これをより良い方法で処理するための提案が必要ですか?

TAX|CHURCH, Texas, San Antonia, 250.00 | CHURCH としてデータを保存しています。SCHOOL、NEVADA、Park-SCHOOL、122.1 ここで、TAX、CHURCH、SCHOOL は、私が興味を持っていないコードですが、その値です。

if (input != null && !"NOTFOUND".equalsIgnoreCase(input)) {
    String[] list_str = input.split("\\|");
    int list_length = list_str.length;
    int i;

    for (String asset : list_str) {
        System.out.println(" asset : " + asset);
        if (asset.contains("TAX")) {
            /* get values for "TAX" */
            /* replace "TAX" from values */
        }

        if (asset.contains("CHURCH")) {
            input = input.replaceFirst("CHURCH", "");
        }

        if (asset.contains("SCHOOL")) {
            input = input.replaceAll("SCHOOL", "");
        }
    }
}

System.out.println(" input : " + input); /* final input */

入力条件:

私の入力文字列は次のようになります =
"TAX|CHURCH, Texas, San Antonia, 250.00 | SCHOOL, NEVADA, Park-SCHOOL, 122.1"
または"CHURCH, Texas, San Antonia, 250.00 | SCHOOL, NEVADA, Park-SCHOOL, 122.1"
または 「TAX|CHURCH, Texas, San Antonia, 250.00」
または 「CHURCH, Texas, San Antonia, 250.00」

最終的な入力は " ,Texas, San Antonia, 250.00 | , NEVADA, Park-, 122.1 " ですが、最終的な文字列は

入力 = "テキサス、サンアントニア、250.00、ネバダ、パークスクール、122.1 "

4

3 に答える 3

3

入力形式が言及した形式のいずれかであることが保証されている場合、次のコードが機能します。

public class TestClass {

public static void main(String[] args) {
    String input = "TAX|CHURCH, Texas, San Antonia, 250.00 | SCHOOL, NEVADA, Park-SCHOOL, 122.1";
    String[] parts = input.split(" \\| ");
    String result = parts[0].split("CHURCH, ")[1];

    if (parts.length > 1) {
        result += ", " + parts[1].substring(8); 
    }

    System.out.println(result);
}

}

これにより、式全体が 2 つの部分に分割されます。正規表現を使用して文字列をチェックし|、別の正規表現を使用して最初の部分の を超えるすべてのものを取得します。式CHURCH,の 2 番目の部分が存在する場合は、ハードコードされたインデックスを使用して を取得します。 2番目の部分は常にで始まるため、必要な部分文字列SCHOOL,

この種の状況で非常に役立つ正規表現について読むことをお勧めします。

于 2013-03-27T21:43:11.990 に答える
1

このようにスペースを追加するだけです:

    String input = "CHURCH, Texas, San Antonia, 250.00 | SCHOOL, NEVADA, Park-SCHOOL, 122.1";
    String i = "";
    if (input != null && !"NOTFOUND".equalsIgnoreCase(input)) {

        String[] list_str = input.split(" \\| ");

        for (String asset : list_str) {
            System.out.println(asset);
            i = i + asset+" ";
            if (asset.contains("TAX")) {
                /* get values for "TAX" */
                /* replace "TAX" from values */
            }

            if (input.contains("CHURCH,")) {
                i =  i.replaceFirst("CHURCH,", "");
            }

            if (input.contains(" SCHOOL,")) {
                i =  i.replaceAll(" SCHOOL,", "");
            }


        }

    }
    System.out.println(" input : " + i); /* final input */
于 2013-03-27T21:37:39.603 に答える
1

これを試して

String input = "CHURCH, Texas, San Antonia, 250.00 | SCHOOL, NEVADA, Park-SCHOOL, 122.1";

if (input != null && !"NOTFOUND".equalsIgnoreCase(input)) {
    String[] list_str = input.split("\\|");

    for (String asset : list_str) {
        System.out.println(" asset : " + asset);
        if (asset.contains("TAX")) {
            /* get values for "TAX" */
        /* replace "TAX" from values */
        }

        if (asset.contains("CHURCH")) {
            input = input.replaceFirst("CHURCH,", "");
        }

        if (asset.contains("SCHOOL")) {
            input = input.replaceFirst("SCHOOL", "");
        }
    }
    input = input.replaceAll(" \\| ", "");
}

System.out.println(" input : " + input); /* final input */
于 2013-03-27T21:45:03.647 に答える