我有一个以下格式显示的字符串
String str = "query at.dddimin ntoreturn:1 reslen:1833 nscanned:1 nquery: { like_symbol: \"SC!JNJ\" } nreturned:1 bytes:1817";
我需要在上面显示的点at
之后提取单词,以便输出应为“ dddimin ”
我试过这种方式
String[] result = str.split("\\.");
System.out.println(result[1]);
但我得到的输出低于
dddimin ntoreturn:1 reslen:1833 nscanned:1 nquery: { unique_symbol: "SC!JNJ" } nreturned:1 bytes:1817
有人可以告诉我如何在点后得到这个词。
答案 0 :(得分:5)
对于解决字符串模式匹配问题的一般方法,请考虑使用正则表达式。在下面的代码中,正则表达式\.(\S+)
表示:找到以点开头的字符串匹配,后跟一个或多个不是空格的字符,并捕获组中点后面的字符。在Java中,这将写成如下:
Pattern regex = Pattern.compile("\\.(\\S+)");
Matcher match = regex.matcher(str);
if (match.find())
System.out.println(match.group(1));
match.group(1)
表达式将返回预期结果:
dddimin
答案 1 :(得分:3)
int dot = str.indexOf('.')+1;
String result = str.substring(dot,str.substring(dot).indexOf(' '));
答案 2 :(得分:0)
如果你想使用split()
,你的正则表达式需要在这种情况下按点和空格分割:
String[] result = str.split("\\ |\\.");
assertEquals("dddimin", result[2]);
答案 3 :(得分:0)
int dot = str.indexOf('.');
String result = str.substring(dot + 1, dot + str.substring(dot).indexOf(' '));