从java字符串中解析出特定字符

时间:2017-07-10 12:35:50

标签: java

我一直在尝试从包含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);
  }
}

3 个答案:

答案 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("\\[|\\]|\\{|\\}", "")