0

需要建议以更好的方式处理这个问题吗?

我的数据存储为 TAX|CHURCH, Texas, San Antonia, 250.00 | 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);
}

}

这会将整个表达式分成两部分,使用正则表达式检查字符串|,使用单独的正则表达式获取CHURCH,第一部分之外的所有内容,如果存在表达式的第二部分,则使用硬编码索引来获取您需要的子字符串,因为第二部分总是以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 回答