Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String.split(pattern)由于{in pattern:java.util.regex.PatternSyntaxException中的{而引发异常_Java_String_Split - Fatal编程技术网

String.split(pattern)由于{in pattern:java.util.regex.PatternSyntaxException中的{而引发异常

String.split(pattern)由于{in pattern:java.util.regex.PatternSyntaxException中的{而引发异常,java,string,split,Java,String,Split,我有一个Java字符串,下面是我关心的部分{3:{108:TR2011052300088} 稍后,我在{3:{108:}上做了一个拆分,出于某种原因,我一直在谷歌上搜索{and}是一个特殊字符,所以它必须转义\},而且\{显然这不起作用->编译时错误 其他人提到这是Java正则表达式中的一些错误。我真的不确定。我得到的例外是: 主线程java.util.regex.PatternSyntaxException中的异常:索引2{3:{108:at java.util.regex.Pattern.e

我有一个Java字符串,下面是我关心的部分{3:{108:TR2011052300088}

稍后,我在{3:{108:}上做了一个拆分,出于某种原因,我一直在谷歌上搜索{and}是一个特殊字符,所以它必须转义\},而且\{显然这不起作用->编译时错误

其他人提到这是Java正则表达式中的一些错误。我真的不确定。我得到的例外是:

主线程java.util.regex.PatternSyntaxException中的异常:索引2{3:{108:at java.util.regex.Pattern.errorUnknown源附近的未关闭计数闭包

长话短说,我的代码使用{3:{108:作为分隔符拆分字符串,并在其上崩溃:

String query="{3: {108:";
String [] messageParts = message.split(query);
我知道还有其他方法可以做到这一点,尽管更复杂,比如编写自己的解析器等等

我怎样才能拆分字符串而不使其崩溃

编辑: 要回答一些评论: -双斜杠没有帮助:\{give\{3:\{108:MAMABEARid123}}因为两个斜杠变成了1 -使用1斜杠转义将无法编译:无效的转义序列

转义{

转义{的示例:

假设您真的不需要正则表达式,我会使用的类

您可以使用Iterables.toArray从中创建一个数组,或者使用list.newArrayList创建一个列表,或者其他…

假设您不需要正则表达式,我会使用的类是


您可以使用Iterables.toArray从中创建数组,或使用list.newArrayList创建列表,或其他…

删除花括号,然后在冒号上拆分:

字符串inp={3:{108:TR2011052300088}

System.out.printlnip.replaceAll[\\{\\}],.split:[2]


打印“TR2011052300088”

删除花括号,然后在冒号上拆分:

字符串inp={3:{108:TR2011052300088}

System.out.printlnip.replaceAll[\\{\\}],.split:[2]


打印“TR2011052300088”

使用[{]..我以前用过正则表达式处理Swift消息,

使用[{]..我以前用过正则表达式处理Swift消息,

也许转义}会有帮助?它告诉你它试图解释括号。是的,但我如何转义它们\{不起作用。当你清楚地说这不起作用时,如果你说它以什么方式不起作用,它会有帮助。逃避使用\\}和\\{@Adrian看我的答案-它起作用了…也许逃避}会有帮助?它告诉你它试图解释括号。是的,但我如何逃避它们\{不起作用。当你清楚地说这不起作用时,如果你说它以什么方式不起作用,那会有帮助。为了逃避使用\\}和\\{@Adrian,请看我的答案-它起作用了…结果我不得不对我的项目进行一次干净的构建,以便能够添加\\{到一个字符串。仅供参考,我将模式与拆分结果相结合,这样在打印时转义就不同了。事实证明,我必须对我的项目进行干净的构建,以便能够将\\{添加到字符串中。仅供参考,我将模式与拆分结果相结合,这样在打印时转义就不同了
    public static void main(String[] args) {
        String s = "{3: {108:TR2011052300088}}";
        String[] ss  = s.split("\\{3: \\{108:");
        System.out.println(ss[1]); //prints TR2011052300088}}
    }
private static final Splitter SPLITTER = Splitter.on("{3: {108:");

...

Iterable<String> bits = SPLITTER.split(messageParts);