Java 如何从字符串中提取特定模式
我有一张excel表格,我正在逐行解析excel表格 我将从中获取此格式的字符串Java 如何从字符串中提取特定模式,java,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.pri
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”}返回:1字节:1817etc.使用
子字符串
:
公共静态void main(字符串[]args){
String str=“query at.mycollection ntoreurn:1 reslen:1833 nscaned:1 nquery:{like_symbol:\'SC!JNJ\'}返回:1字节:1817etc…”;
int index=str.indexOf(“nquery:”);
int index2=str.indexOf(“nreturned:1”);
//一些验证
如果(索引!=-1&&index2!=-1&&index2
输出:nquery:{like_symbol:“SC!JNJ”}
实际上,正则表达式适用于更复杂的情况,但如果您具有与您发布的相同的结构,
子字符串
就足够了使用子字符串
:
公共静态void main(字符串[]args){
String str=“query at.mycollection ntoreurn:1 reslen:1833 nscaned:1 nquery:{like_symbol:\'SC!JNJ\'}返回:1字节:1817etc…”;
int index=str.indexOf(“nquery:”);
int index2=str.indexOf(“nreturned:1”);
//一些验证
如果(索引!=-1&&index2!=-1&&index2
输出:nquery:{like_symbol:“SC!JNJ”}
事实上,正则表达式适用于更复杂的情况,但如果您具有与您发布的相同的结构,
子字符串
就足够了您可以尝试indexOf并随后使用子字符串您可以尝试indexOf并随后使用子字符串您可以尝试indexOf并随后使用子字符串后的值?是nquery:
之后的值,始终使用{
和}
引用。通常我建议使用正则表达式,但在查看答案后,在这种情况下不是这样。然而,nReturn是否总是会被nReturn:1?我猜不会,所以您可能希望将第二个indexOf限制为“nreturned:”。@JaredBeekman,上面代码的正则表达式版本是什么?我对regex感觉很舒服。老实说,我不擅长构建regex。我总是使用一些在线评估工具或其他基于我碰巧使用的语言的工具。这个链接是针对Java的:通常我会推荐regex,但是在查看了答案之后,在这种情况下就不推荐了。然而,nReturn是否总是会被nReturn:1?我猜不会,所以您可能希望将第二个indexOf限制为“nreturned:”。@JaredBeekman,上面代码的正则表达式版本是什么?我对regex感觉很舒服。老实说,我不擅长构建regex。我总是使用一些在线评估工具或其他基于我碰巧使用的语言的工具。此链接适用于Java版本:
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");
}
}