如何在Java中使用String.split()时保留分隔符?

时间:2016-09-02 05:59:31

标签: java

String TextValue = "hello{MyVar} Discover {MyVar2} {MyVar3}";
String[] splitString = TextValue.split("\\{*\\}");

我在[{MyVar, {MyVar2, {MyVar3]

中获得的输出为splitString

但我的要求是保留这些分隔符{},即[{MyVar}, {MyVar2}, {MyVar3}]

需要一种匹配上述输出的方法。

2 个答案:

答案 0 :(得分:3)

使用类似的东西:

Pattern p = Pattern.compile("(\\{\\w+\\})");
String str = ...
Matcher m = p.matcher(str);
while(m.find())
    System.out.println(m.group(1));

请注意,上面的代码未经测试,但会查找大括号内的单词并将它们放在一个组中。然后它将遍历字符串并输出与上面的表达式匹配的任何字符串。

正则表达式的示例可用here

答案 1 :(得分:0)

谢谢kelvin& npinti。

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class CreateMatcherExample {
    public static void main(String[] args) {
        String TextValue = "hello{MyVar} Discover {My_Var2} {My_Var3}";
        String patternString = "\\{\\w+\\}";

        Pattern pattern = Pattern.compile(patternString);
        Matcher matcher = pattern.matcher(TextValue);

        while(matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}