繁体   English   中英

使用多个定界符分割查询字符串-Java

[英]Splitting query string using multiple delimiters - java

我想拆分这些字符串:

  1. / d / {?一个}
  2. /A B C D}
  3. /A B C D}

分为以下细分列表:

  1. [d,{?a}](这种情况很简单,只需使用/拆分即可)
  2. [A B C D}]
  3. [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);

您将使用此正则表达式在split数组中获得空元素,但所有其他元素均被正确拆分

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM