需要建议以更好的方式处理这个问题吗?
我的数据存储为 TAX|CHURCH, Texas, San Antonia, 250.00 | SCHOOL,NEVADA,Park-SCHOOL,122.1 其中 TAX,CHURCH,SCHOOL 是我不感兴趣的代码,但它们的值(value)。
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 */
输入条件:
我的输入字符串可能看起来像=
“税务|德克萨斯州圣安东尼奥教堂,250.00 | 内华达州学校,Park-SCHOOL,122.1”
或“教堂,德克萨斯州,圣安东尼奥,250.00 | 学校,内华达州,公园学校,122.1”
或“TAX|CHURCH,德克萨斯州,圣安东尼奥,250.00”
或“教堂,德克萨斯州,圣安东尼奥,250.00”
我得到的最终输入为“,Texas, San Antonia, 250.00 | , NEVADA, Park-, 122.1”,但我希望我的最终字符串是
input =“德克萨斯州,圣安东尼奥,250.00,内华达州,Park-SCHOOL,122.1”
最佳答案
如果输入格式保证是您提到的格式之一,则以下代码将起作用:
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,
我建议阅读正则表达式,这在这种情况下非常有用。
关于JAVA:在管道上拆分并将值附加到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15669551/