关于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转义字符\解析。相关推荐

  1. java转义字符包括元字符_语言的转义字符及正则表达式的转义字符的表示

    Java语言中的转义字符及正则语法中的转义字符在Java字符串中的表示. ASCLL中的转义字符共有14个: \o 空字符(NULL) 00H/0 \n 换行符(LF) 0AH/10 \r 回车符(C ...

  2. json java typeof_java解析json

    1:下载另外一个Java的小包就可以了: http://www.JSON.org/java/json_simple.zip 里面有源码和文档例题和编程的lib包:编程只需要json_simple.ja ...

  3. Java XML解析工具 dom4j介绍及使用实例

    Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...

  4. JAVA面试解析(有赞二面)

    作者:孤独烟 来自:打杂的ZRJ 本文的题目出自博客 http://www.54tianzhisheng.cn/2018/07/12/youzan/ 但是作者没有给出答案,博主斗胆来制作答案版. 也是 ...

  5. Java XML解析器

    使用Apache Xerces解析XML文档 一.技术概述 在用Java解析XML时候,一般都使用现成XML解析器来完成,自己编码解析是一件很棘手的问题,对程序员要求很高,一般也没有专业厂商或者开源组 ...

  6. 如何在Java中解析命令行参数?

    在Java中解析命令行参数的好方法是什么? #1楼 我不建议使用Apache Common CLI库,因为它是非线程安全的. 它使用带有静态变量和方法的有状态类来进行内部工作(例如OptionBuil ...

  7. Java泛型解析(02):通配符限定

    Java泛型解析(02):通配符限定      考虑一个这种场景.计算数组中的最大元素. [code01] public class ArrayUtil {public static <T> ...

  8. Java XML解析工具 JDOM介绍及使用实例

    Java XML解析工具 JDOM JDOM介绍 JDOM是一种使用XML的独特Java工具包,用于快速开发XML应用程序. 它的设计包含Java语言的语法乃至语义. JDOM是一个开源项目,它基于树 ...

  9. Java动态解析域名

    Java动态解析域名 Java提供InetAddress类,可以对域名-IP进行正向.逆向解析. InetAddress解析的时候一般是调用系统自带的DNS程序. linux 默认的DNS方式是读取/ ...

最新文章

  1. Datawhale组队学习周报(第018周)
  2. 《Oracle SQL疑难解析》——1.6 批量地从一个表中复制数据到另一个表
  3. 手机视频直播解决方案
  4. ssr pac_阴阳师新SSR千姬什么时候上线 ssr千姬活动上线时间一览
  5. Eigen+suitesparse for windows 安装
  6. 【Modern OpenGL】转换 Transformations
  7. HashMap散列无序存储测试
  8. jdk list接口源码解析
  9. java判断运算符_java运算符,判断符(了解)
  10. 达梦数据库的约束键以及高级查询小结
  11. ArcGIS计算河宽
  12. 【Python学习】transpose函数
  13. 计算机无法在安全模式下完成安装,我的电脑中了一种病毒,在安全模式下、微系统模式下都无法把它格式化,甚至重分区再低格后重装系统都不行啊...
  14. Geography V.S. Geometry
  15. 推荐几个容易中的计算机EI源刊(基本百发百中)
  16. surface pro linux服务器,在Surface Pro上安装Ubuntu
  17. source命令用法
  18. android消除屏幕锁
  19. 2023东北农业大学计算机考研信息汇总
  20. java八种基本数据类型及包装类详解

热门文章

  1. iphone5s 越狱 绕过icolud
  2. asp.net动态设置CSS等
  3. 原BEA全球副总裁沈惠中出任普元软件CEO
  4. 如何在mac上播放iphone音频
  5. 如何成就百万点击的名博
  6. CPU内核部件之:MMU、MPU、ITCM、DTCM、CCM、Cache
  7. 第一章 企业信息化战略有实施
  8. 【VTK+有限元后处理】实时剖切视图
  9. Three.js实现剖切
  10. 爱尔兰卫生部遭Conti勒索软件攻击说明与建议