在Java中提取子字符串

时间:2014-11-18 09:47:01

标签: java regex string

我有一个这样的字符串:

string = "item=somevalue&user=user1";

我需要找到一种方法来在Java中提取子字符串“somevalue”(即item =之前和之前的子字符串)。

5 个答案:

答案 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();
                }
            };
        }
    };
}