我想使用Pattern中的方法拆分字符串,这是我做的
String s = "[[[0.093493,51.6037],[0.091015,51.5956]]]"
Pattern branchPattern = Pattern.compile("[...]");
String[] split = branchPattern.split(s);
我想得到String []包含[0.093493,51.6037]和[0.091015,51.5956]的结果。但是这段代码的结果并不是我想要的结果。我该怎么分裂这个字符串?或者有没有像使用匹配器以我想要的格式分割这个字符串?
答案 0 :(得分:0)
只是做匹配而不是分裂。
Pattern p = Pattern.compile("\\[[^\\[\\]]+\\]");
Matcher m = p.matcher(s);
while(m.find())
{
System.out.println(m.group());
}
或
string.replaceAll("^\\[{2}|\\]{2}$", "").split(",(?=\\[)");
或
string.replaceAll("^\\[+|\\]+$", "").split("\\],\\[)");
答案 1 :(得分:0)
我试图用另一种观点回答。看看。假设您已经在两个特殊字符之间放置了参数,例如:#parameter#或参数,或者甚至是两个不同的符号,例如* paramter#。我们可以通过以下代码在这些符号之间列出所有这些参数:
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
public class Splitter {
public static void main(String[] args) {
String pattern1 = "#";
String pattern2 = "#";
String text = "(#n1_1#/#n2_2#)*2/#n1_1#*34/#n4_4#";
Pattern p = Pattern.compile(Pattern.quote(pattern1) + "(.*?)" + Pattern.quote(pattern2));
Matcher m = p.matcher(text);
while (m.find()) {
ArrayList parameters = new ArrayList<>();
parameters.add(m.group(1));
System.out.println(parameters);
ArrayList result = new ArrayList<>();
result.add(parameters);
// System.out.println(result.size());
}
}
}
此处列表结果将包含参数n1_1,n2_2,n4_4。