[英]Splitting query string using multiple delimiters - java
我想拆分这些字符串:
分为以下细分列表:
对于其他情况,使用/分割将不会得到我想要的结果。 在这种情况下,2和3.的最后一个字符串元素将是{c} {?d}和c {?d}。
同时实现所有1,2,3的最佳方法是什么?
谢谢。
在第一种情况下,它正在分裂。 但在其他情况下,它正在解析。 您必须先解析一个字符串,然后将其拆分。 尝试在每个“ {”之前和每个“}”之后添加“ /”。 然后您可以用'/'分割它。 例如:
解析之前:
2. /a/b/{c}{?d}
3. /a/b/c{?d}
解析后:
2. /a/b//{c}//{?d}/
3. /a/b/c/{?d}/
然后删除多余的“ /”,分割字符串并感到高兴。
如果您知道您的输入将始终是不同于{和}或{xyz}的任何字符xyz,则这是一些解决问题的简单方法。 如果您还有其他输入,则需要进行一些修改:
String[] arr = input.split("/");
List<String> result = new ArrayList<>();
for (String elem : arr) {
int lastCut = 0;
for (int i = 0; i < elem.length(); i++) {
if (elem.charAt(i) == '{' || elem.charAt(i) == '}') {
if (i > 0) {
String previousElem = elem.substring(lastCut, i);
result.add(previousElem);
}
lastCut = i;
}
}
if (lastCut < elem.length() - 2)
String lastElem = elem.substring(lastCut + 1, elem.length());
result.add(lastElem);
}
尝试使用正则表达式解决问题。 这可能是一个以以下内容开头的脚本:
String regex = "(/)|(?=\\{)";
String s = "/a/b/{c}{?d}";
String[] split = s.split(regex);
您将使用此正则表达式在split数组中获得空元素,但所有其他元素均被正确拆分
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.