如何从String中提取特定模式

时间:2013-09-07 14:47:57

标签: java

我有一张excel表,我正在逐行解析excel表单

我将获得此格式的字符串

query at.mycollection ntoreturn:1 reslen:1833 nscanned:1  nquery: { like_symbol: "SC!JNJ" }  nreturned:1 bytes:1817etc...

我试图只从字符串中提取nquery,因此输出必须看起来像

nquery: { like_symbol: "SC!JNJ" }

我试过这种方式

System.out.println(s.split("nscanned:1")[1]);

我得到的输出是

nquery:{like_symbol:“SC!JNJ”} nreturned:1字节:1817etc ....

2 个答案:

答案 0 :(得分:3)

使用substring

public static void main(String [] args){

    String str = "query at.mycollection ntoreturn:1 reslen:1833 nscanned:1  nquery: { like_symbol: \"SC!JNJ\" }  nreturned:1 bytes:1817etc...";

    int index = str.indexOf("nquery:");
    int index2 = str.indexOf("nreturned:1");

    // some validation 
    if(index != -1 && index2 != -1 && index < index2){
        String str2 = str.substring(index, index2);

        str2 = str2.trim();

        System.out.println(str2);
    }
    else{
        System.err.println("Something wrong here");
    }
}

输出:nquery: { like_symbol: "SC!JNJ" }

实际上,正则表达式适用于更复杂的情况,但如果你有与你发布的结构相同的结构,那么substring就足够了

答案 1 :(得分:0)

您可以尝试使用indexOf和随后的子串