我有一个这样的字符串:
string = "item=somevalue&user=user1";
我需要找到一种方法来在Java中提取子字符串“somevalue”(即item =之前和之前的子字符串)。
答案 0 :(得分:3)
JUst使用积极的lookbehind和积极的前瞻断言,如下所示,
(?<=item=).*?(?=&)
或强>
(?<=item=)[^&]*(?=&)
<强>解释强>
(?<=item=)
字符串必须为ietm=
[^&]*
匹配任何字符,但不能匹配&
符号零次或多次。(?=&)
匹配后的字符必须为&
符号。<强>代码:强>
String s = "item=somevalue&user=user1";
Pattern regex = Pattern.compile("(?<=item=).*?(?=&)");
Matcher matcher = regex.matcher(s);
while(matcher.find()){
System.out.println(matcher.group(0));
}
<强>输出:强>
somevalue
答案 1 :(得分:1)
请尝试以下代码:
String test= "item=somevalue&user=user1";
String tok[]=test.split("&");
String finalTok[]=tok[0].split("=");
System.out.println(finalTok[1]);
输出
somevalue
答案 2 :(得分:0)
public static void main(String[] args) {
String str = "item=somevalue&user=user1";
String result = "item=somevalue&user=user1".substring(str.indexOf("=") + 1, str.indexOf("&"));
System.out.println(result);
}
<强>输出:强>
<强> someValue中强>
答案 3 :(得分:0)
一线解决方案!
System.out.println(string.substring(string.indexOf("=")+1, string.indexOf("&")));
或者
如果'somevalue'的地方被更改,请添加以下代码!
string = "user=user1&item=somevalue";
System.out.println(string.substring(string.lastIndexOf("=")+1));
答案 4 :(得分:0)
在特殊字符上拆分字符串是一项经常需要的任务,在我看来,正则表达式相当矫枉过正,并且对于这么简单的任务表现不佳。对于经常使用的任务,每个人都应该有一些高性能的字符串工具。
e.g。你可以这样做
for (String s : splitToIterable(str, '&')) {
if (s.startsWith("item=")) {
String itemValue = s.substring(5);
}
}
如果您有像这样的帮助方法
public static Iterable<String> splitToIterable(final String str, final char delim) {
if (str == null) {
return null;
}
return new Iterable<String>() {
public Iterator<String> iterator() {
return new Iterator<String>() {
int lastIndex = 0;
String next = fetchNext();
public boolean hasNext() {
return next != null;
}
public String next() {
if (next == null) {
throw new NoSuchElementException();
}
String result = next;
next = fetchNext();
return result;
}
public String fetchNext() {
if (lastIndex == -1) {
return null;
}
String next;
int i = str.indexOf(delim, lastIndex);
if (i > -1) {
next = str.substring(lastIndex, i);
lastIndex = i + 1;
}
else {
next = str.substring(lastIndex);
lastIndex = -1;
}
return next;
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
};
}