关于java转义字符\解析。
关于java的转义字符我一直有疑问。之前都没有仔细研究过,模糊的用过。今天刚好有时间就仔细研究了下。
下面是一段后台返回的json字符串:
String jsonStr="{\\\"爆发训练(休息8s)\\\":\\\"24次,3组\\\",\\\"初级肌力(休息7s)\\\":\\\"14次,2组\\\"}"
这样一段的字符串需要解析出来。首先我们需要把转义的\去掉。然后才能转换成JOSNObject.
这一段字符串打印输出以后是这样:
{\"爆发训练(休息8s)\":\"24次,3组\",\"初级肌力(休息7s)\":\"14次,2组\"}
我刚开始会很纳闷,\\\"怎么转义到只剩下\"了,其实我们只需要从后忘前看,\"转义后是",\\转义以后是\,所以最后就是\";
举个栗子:String test = "aaaa\\\\\"bbbb\\\\\\";输出就是aaaa\\"bbbb\\\;
我们需要把jsonStr串转换成标准的json字符串我们可以使用String的replaceAll方法。
使用Java的replaceAll(String regex, String replacement)函数,
即用replacement替换所有的regex匹配项,regex是一个正则表达式,replacement是字符串。(1)对于串jsonStr,Java将其进行转义,\\ 表示 \ ,\" 表示 " ,所以我们真正的字符串应该是
{\"爆发训练(休息8s)\":\"24次,3组\",\"初级肌力(休息7s)\":\"14次,2组\"},然而,
我们的目标是 {"爆发训练(休息8s)":"24次,3组","初级肌力(休息7s)":"14次,2组"},
即将转义字符 \ 替换为空。(2)Java的replaceAll(String regex, String replacement)函数,第一个参数是一个正则表达式。
在正则表达式中的\与后面紧跟的那个字符构成一个转义字符,代表着特殊的意义,比如"\n"表示换行符等。
所以,如果要在正则表达式中表示一个反斜杠\,则应当用\\表达 。但参数regex 首先会经过Java的一次
转义,若想表达两个反斜杠 \\,则需四个反斜杠。综上所述:replaceAll 的第一个参数是正则表达式,故而要经过两次转义,一次Java、一次正则。
因此就需要四个反斜杠才可以匹配一个反斜杠。故而,替换一个反斜杠为空的replaceAll的代码即为:String s = jsonStr.replaceAll("\\\\", "");
综上所述。如果需要用正则表达式匹配出两个反斜杠:则需要8个\.
再次举个栗子:String test="\\\\\\abc";其真实的字符串是\\\abc;我们要去掉其中的\。我们需要12个\吗??no.我们只需要匹配一个。然后全部替换掉就好了。即test.replaceAll("\\\\");就可以输出abc了。
当然,我们也可以使用replace(CharSequence target, CharSequence replacement);这个就不需要经过正则表达式的转义了。只需要Java的一层转义就好了。即 String replace = jsonStr.replace("\\", "");
输出:{"爆发训练(休息8s)":"24次,3组","初级肌力(休息7s)":"14次,2组"}
剩下的就是Josn解析了。不知道如何解析不固定的中文key这种json请看我的上一篇博客:
解析key为中文的json
每日语录:
善良一点,因为每个人都在与人生苦战。如果真正想要了解他们,只需要用心去看。——奇迹男孩
单曲循环:《钟无艳》
关于java转义字符\解析。相关推荐
- java转义字符包括元字符_语言的转义字符及正则表达式的转义字符的表示
Java语言中的转义字符及正则语法中的转义字符在Java字符串中的表示. ASCLL中的转义字符共有14个: \o 空字符(NULL) 00H/0 \n 换行符(LF) 0AH/10 \r 回车符(C ...
- json java typeof_java解析json
1:下载另外一个Java的小包就可以了: http://www.JSON.org/java/json_simple.zip 里面有源码和文档例题和编程的lib包:编程只需要json_simple.ja ...
- Java XML解析工具 dom4j介绍及使用实例
Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...
- JAVA面试解析(有赞二面)
作者:孤独烟 来自:打杂的ZRJ 本文的题目出自博客 http://www.54tianzhisheng.cn/2018/07/12/youzan/ 但是作者没有给出答案,博主斗胆来制作答案版. 也是 ...
- Java XML解析器
使用Apache Xerces解析XML文档 一.技术概述 在用Java解析XML时候,一般都使用现成XML解析器来完成,自己编码解析是一件很棘手的问题,对程序员要求很高,一般也没有专业厂商或者开源组 ...
- 如何在Java中解析命令行参数?
在Java中解析命令行参数的好方法是什么? #1楼 我不建议使用Apache Common CLI库,因为它是非线程安全的. 它使用带有静态变量和方法的有状态类来进行内部工作(例如OptionBuil ...
- Java泛型解析(02):通配符限定
Java泛型解析(02):通配符限定 考虑一个这种场景.计算数组中的最大元素. [code01] public class ArrayUtil {public static <T> ...
- Java XML解析工具 JDOM介绍及使用实例
Java XML解析工具 JDOM JDOM介绍 JDOM是一种使用XML的独特Java工具包,用于快速开发XML应用程序. 它的设计包含Java语言的语法乃至语义. JDOM是一个开源项目,它基于树 ...
- Java动态解析域名
Java动态解析域名 Java提供InetAddress类,可以对域名-IP进行正向.逆向解析. InetAddress解析的时候一般是调用系统自带的DNS程序. linux 默认的DNS方式是读取/ ...
最新文章
- Datawhale组队学习周报(第018周)
- 《Oracle SQL疑难解析》——1.6 批量地从一个表中复制数据到另一个表
- 手机视频直播解决方案
- ssr pac_阴阳师新SSR千姬什么时候上线 ssr千姬活动上线时间一览
- Eigen+suitesparse for windows 安装
- 【Modern OpenGL】转换 Transformations
- HashMap散列无序存储测试
- jdk list接口源码解析
- java判断运算符_java运算符,判断符(了解)
- 达梦数据库的约束键以及高级查询小结
- ArcGIS计算河宽
- 【Python学习】transpose函数
- 计算机无法在安全模式下完成安装,我的电脑中了一种病毒,在安全模式下、微系统模式下都无法把它格式化,甚至重分区再低格后重装系统都不行啊...
- Geography V.S. Geometry
- 推荐几个容易中的计算机EI源刊(基本百发百中)
- surface pro linux服务器,在Surface Pro上安装Ubuntu
- source命令用法
- android消除屏幕锁
- 2023东北农业大学计算机考研信息汇总
- java八种基本数据类型及包装类详解