我一直在尝试从包含JDBC查询结果和列元数据的String中删除特定值。输出格式为:
[{I_Col1=someValue1, I_Col2=someVal2}, {I_Col3=someVal3}]
我想把它变成以下格式:
I_Col1=someValue1, I_Col2=someVal2, I_Col3=someVal3
我试过在" ="之前放弃所有内容,但是有些" someVal"数据有" ="在他们中。有没有有效的方法来解决这个问题?
下面是我使用的代码:
for(int i = 0; i < finalResult.size(); i+=modval) {
String resulttemp = finalResult.get(i).toString();
String [] parts = resulttemp.split(",");
//below is only for
for(int z = 0; z < columnHeaders.size(); z++) {
String replaced ="";
replaced = parts[z].replace("*=", "");
System.out.println("Replaced: " + replaced);
}
}
答案 0 :(得分:1)
你不需要在这里任何分裂!
您可以使用replaceAll()
和正则表达式的强大功能,只需替换 所有出现的不需要的字符,例如:
someString.replaceAll("[\\[\\]\\{\\}", "")
当您将其应用于字符串时,结果字符串应完全符合要求。
答案 1 :(得分:1)
您可以使用正则表达式替换方括号和大括号,如[\[\]{}]
例如:
String s = "[{I_Col1=someValue1, I_Col2=someVal2}, {I_Col3=someVal3}]";
System.out.println(s.replaceAll("[\\[\\]{}]", ""));
这将产生以下输出:
I_Col1=someValue1, I_Col2=someVal2, I_Col3=someVal3
这是您对帖子的期望。
然而,更好的方法可能是匹配而不是替换,如果您知道将在&#39; someValue&#39;的位置的字符集。然后你可以设计一个匹配这个特定字符串的正则表达式,无论从字符串的其余部分分离I_Col1=someValue1
什么,你就可以提取它: - )
修改强>
关于匹配方法,假设 例如: 这将产生:I_Col1=
后面的值包含来自a-z
和_
的字符(无论情况如何),您可以使用此模式:(I_Col\d=\w+),?
< / p>
String s = "[{I_Col1=someValue1, I_Col2=someVal2}, {I_Col3=someVal3}]";
Matcher m = Pattern.compile("(I_Col\\d=\\w+),?").matcher(s);
while (m.find())
System.out.println(m.group(1));
I_Col1=someValue1
I_Col2=someVal2
I_Col3=someVal3
答案 2 :(得分:0)
你可以在字符串上对replaceAll
进行四次调用。
String query = "[{I_Col1=someValue1, I_Col2=someVal2}, {I_Col3=someVal3}]"
String queryWithoutBracesAndBrackets = query.replaceAll("\\{", "").replaceAll("\\]", "").replaceAll("\\]", "").replaceAll("\\[", "")
如果您希望代码更容易理解,也可以使用正则表达式。
String query = "[{I_Col1=someValue1, I_Col2=someVal2}, {I_Col3=someVal3}]"
queryWithoutBracesAndBrackets = query.replaceAll("\\[|\\]|\\{|\\}", "")