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