Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
如何在java中使用带拆分函数的转义?_Java_Regex - Fatal编程技术网

如何在java中使用带拆分函数的转义?

如何在java中使用带拆分函数的转义?,java,regex,Java,Regex,我正在实现一个聊天系统,在解析消息时遇到了一个问题。 作为消息字符串的一部分,我发送了一组如下的键参数 key1:value1、key2:value2、key3:value3、消息:“带字符的随机文本:/”等 稍后我将使用spliton命令和冒号解析这个字符串。然而,其中一个参数是message,它可以同时包含命令和冒号。因此,如果消息包含这些字符中的任何一个,它将破坏我的解析逻辑。那么,有什么方法可以转义消息字符串中的这些字符吗?我试着加上两个反斜杠来逃避它,但没有成功 解析代码

我正在实现一个聊天系统,在解析消息时遇到了一个问题。 作为消息字符串的一部分,我发送了一组如下的键参数

key1:value1、key2:value2、key3:value3、消息:“带字符的随机文本:/”等

稍后我将使用spliton命令和冒号解析这个字符串。然而,其中一个参数是message,它可以同时包含命令和冒号。因此,如果消息包含这些字符中的任何一个,它将破坏我的解析逻辑。那么,有什么方法可以转义消息字符串中的这些字符吗?我试着加上两个反斜杠来逃避它,但没有成功

解析代码

        String[] params = chat.split(",");

    for(String param:params){
        String[]pair = param.split(":");
        if(pair.length != 2){
            String key = pair[0];
            String value = pair[1];
        }else{
            return null;
        }
    }

你的问题不清楚,我需要更多的例子和接收JSON格式消息的最佳方式,这使你的工作更加清晰,但我提供两个答案

仅获取原始消息(如果您确定键值为“message”并捕获第二部分中的所有内容):

返回:

“带字符的随机文本:/”等

要转义字符串中的特殊字符,必须使用以下方法:

 for(String param:params){
        if (param.contains("message")){
            String[] pairs=param.split("message:");
            String key = "message";
            String value = StringEscapeUtils.escapeJava(pairs[1]);
        }
        String[]pair = param.split(":");
        if(pair.length != 2){
            String key = pair[0];
            String value = pair[1];

        }else{
            return null;
        }
返回:

\“带字符的随机文本:/\”等

您必须导入Apache Commons Lang»3.0以下是maven的链接:

请提供一个示例或一段代码。为什么需要重新发明轮子?使用一些已经有库支持转义的格式,比如json或xml。如果值(value1,value2…)有一个开始和结束字符,例如quote:“chat,message;”可以找到json解码器并将其存储在
散列中
?类似这样的内容:,在Java中,您需要使用Matcher循环。但是,如果我自己设计格式,我个人将使用更强的正则表达式,如果它是现有格式,则使用库。
 for(String param:params){
        if (param.contains("message")){
            String[] pairs=param.split("message:");
            String key = "message";
            String value = StringEscapeUtils.escapeJava(pairs[1]);
        }
        String[]pair = param.split(":");
        if(pair.length != 2){
            String key = pair[0];
            String value = pair[1];

        }else{
            return null;
        }