JAVA:拆分管道并将值附加到字符串

时间:2013-03-27 21:09:35

标签: java string replace split

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

我的数据存储为TAX | CHURCH,Texas,San Antonia,250.00 |学校,内华达州,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 |教堂,德克萨斯州,圣安东尼奥,250.00 |学校,内华达州,公园学校,122.1”
“教会,德克萨斯州,圣安东尼奥,250.00 |学校,内华达州,公园学校,122.1”
“TAX | CHURCH,Texas,San Antonia,250.00”
“教会,德克萨斯州,圣安东尼奥,250.00”

我得到最终输入为“,Texas,San Antonia,250.00 |,NEVADA,Park-,122.1 ”,但我期待我的最终字符串

input =“ Texas,San Antonia,250.00,NEVADA,Park-SCHOOL,122.1

3 个答案:

答案 0 :(得分: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,开头

我建议阅读在这种情况下非常有用的正则表达式。

答案 1 :(得分: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 */

答案 2 :(得分: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 */