使用多个定界符拆分查询字符串 - java
Splitting query string using multiple delimiters - java
我想拆分这些字符串:
- /d/{?a}
- /a/b/{c}{?d}
- /a/b/c{?d}
进入以下细分列表:
- [d, {?a}] (这种情况很简单,用/拆分即可)
- [a, b, {c}, {?d}]
- [a, b, c, {?d}]
对于其他情况,使用/拆分不会得到我想要的结果。在这种情况下,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);
你将在使用此正则表达式的分割数组中得到空元素,但所有其他元素都被正确分割
我想拆分这些字符串:
- /d/{?a}
- /a/b/{c}{?d}
- /a/b/c{?d}
进入以下细分列表:
- [d, {?a}] (这种情况很简单,用/拆分即可)
- [a, b, {c}, {?d}]
- [a, b, c, {?d}]
对于其他情况,使用/拆分不会得到我想要的结果。在这种情况下,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);
你将在使用此正则表达式的分割数组中得到空元素,但所有其他元素都被正确分割