在开发企业微信电子发票之拉取电子发票接口的时候,微信服务器会发送给我们一个2层的转义字符串,而我们要想得到我们想要的结果,就需要进行一些处理:

反转义+去除首尾双引号。

一、需求

现有一个字符串 str :

        String str="\"[{\\\"card_id\\\":\\\"pEVWfuPFrMuU3fkx5iWQeSBSefTg\\\",\\\"encrypt_code\\\":\\\"O\\\\/mPnGTpBu22a1szmK2ogzhFPBh9eYzv2p70L8yzyymmmDDmLBJfmhaRYC2+Ac1QqztRDyQ9SVEU5gdknT+Dks8RPfvOVTVRVykyQ8pe+bA9vWT04nL0w\\\\/YDmtAnfZ4+Rtvt55ZfNt5zQuiukRmETg==\\\",\\\"app_id\\\":\\\"wxbc0799a47795854a\\\"}]\"";

它在控制台上的输出为:

"[{\"card_id\":\"pEVWfuPFrMuU3fkx5iWQeSBSefTg\",\"encrypt_code\":\"O\\/mPnGTpBu22a1szmK2ogzhFPBh9eYzv2p70L8yzyymmmDDmLBJfmhaRYC2+Ac1QqztRDyQ9SVEU5gdknT+Dks8RPfvOVTVRVykyQ8pe+bA9vWT04nL0w\\/YDmtAnfZ4+Rtvt55ZfNt5zQuiukRmETg==\",\"app_id\":\"wxbc0799a47795854a\"}]"

现在想由str得到一个字符串strA,strA在控制台上的输出为:

[{"card_id":"pEVWfuPFrMuU3fkx5iWQeSBSefTg","encrypt_code":"O\/mPnGTpBu22a1szmK2ogzhFPBh9eYzv2p70L8yzyymmmDDmLBJfmhaRYC2+Ac1QqztRDyQ9SVEU5gdknT+Dks8RPfvOVTVRVykyQ8pe+bA9vWT04nL0w\/YDmtAnfZ4+Rtvt55ZfNt5zQuiukRmETg==","app_id":"wxbc0799a47795854a"}]

二、代码实现

1.代码

        String str="\"[{\\\"card_id\\\":\\\"pEVWfuPFrMuU3fkx5iWQeSBSefTg\\\",\\\"encrypt_code\\\":\\\"O\\\\/mPnGTpBu22a1szmK2ogzhFPBh9eYzv2p70L8yzyymmmDDmLBJfmhaRYC2+Ac1QqztRDyQ9SVEU5gdknT+Dks8RPfvOVTVRVykyQ8pe+bA9vWT04nL0w\\\\/YDmtAnfZ4+Rtvt55ZfNt5zQuiukRmETg==\\\",\\\"app_id\\\":\\\"wxbc0799a47795854a\\\"}]\"";
System.out.println(str); String str2=StringEscapeUtils.unescapeJava(str);
System.out.println(str2); String str3=str2.substring(1,str2.length() - 1);
System.out.println(str3);

2.步骤

2.1 反转义

通过StringEscapeUtils.unescapeJava(str)  清楚转义

        String str2=StringEscapeUtils.unescapeJava(str);
System.out.println(str2);

得到:

"[{"card_id":"pEVWfuPFrMuU3fkx5iWQeSBSefTg","encrypt_code":"O\/mPnGTpBu22a1szmK2ogzhFPBh9eYzv2p70L8yzyymmmDDmLBJfmhaRYC2+Ac1QqztRDyQ9SVEU5gdknT+Dks8RPfvOVTVRVykyQ8pe+bA9vWT04nL0w\/YDmtAnfZ4+Rtvt55ZfNt5zQuiukRmETg==","app_id":"wxbc0799a47795854a"}]"

这时我们发现  距离我们想要的结果,多了首尾两个双引号。

2.去除首尾双引号

        String str3=str2.substring(1,str2.length() - 1);
System.out.println(str3);

即可得到:

[{"card_id":"pEVWfuPFrMuU3fkx5iWQeSBSefTg","encrypt_code":"O\/mPnGTpBu22a1szmK2ogzhFPBh9eYzv2p70L8yzyymmmDDmLBJfmhaRYC2+Ac1QqztRDyQ9SVEU5gdknT+Dks8RPfvOVTVRVykyQ8pe+bA9vWT04nL0w\/YDmtAnfZ4+Rtvt55ZfNt5zQuiukRmETg==","app_id":"wxbc0799a47795854a"}]

Java_String_01_由转义字符串得到其原本字符串的更多相关文章

  1. Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助

    Python第二天  变量  运算符与表达式  input()与raw_input()区别  字符编码  python转义符  字符串格式化  format函数字符串格式化  帮助 目录 Pychar ...

  2. 字符串类型 str-->转义符-->字符串格式化-->占位符-->综合案例

    # ###字符串类型 str """ 用引号起来的就是字符串 三种引号:单引号 双引号 三引号 """ """ ...

  3. Python 入门(一)定义字符串+raw字符串与多行字符串

    定义字符串 前面我们讲解了什么是字符串.字符串可以用''或者""括起来表示. 如果字符串本身包含'怎么办?比如我们要表示字符串 I'm OK ,这时,可以用" " ...

  4. Java 字符串(二)字符串常用操作

    一.连接字符串 1.连接多个字符串 使用“+”运算符可以实现连接多个字符串的功能.“+” 运算符可以连接多个运算符并产生一个 String 对象. 2.连接其他数据类型 字符串与其他基本数据类型进行连 ...

  5. python字符串、字符串处理函数及字符串相关操作

    python字符串.字符串处理函数及字符串相关操作 字符串介绍 python字符串表示 Python除处理数字外还可以处理字符串,字符串用单撇号或双撇号包裹: >>> 'spam e ...

  6. Python:Base1(数据类型,print语句,变量,定义字符串,raw字符串与多行字符串,Unicode字符串,整数和浮点数运算,布尔类型运算)

    1.Python中数据类型: 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据 ...

  7. JS字符串替换函数:Replace(“字符串1″, “字符串2″),

    JS字符串替换函数:Replace(“字符串1″, “字符串2″), 1.我们都知道JS中字符串替换函数是Replace(“字符串1″, “字符串2″),但是这个函数只能将第一次出现的字符串1替换掉, ...

  8. C#算法之判断一个字符串是否是对称字符串

    记得曾经一次面试时,面试官给我电脑,让我现场写个算法,判断一个字符串是不是对称字符串.我当时用了几分钟写了一个很简单的代码. 这里说的对称字符串是指字符串的左边和右边字符顺序相反,如"abb ...

  9. 将数据转化成字符串时:用字符串的链接 还是 StringBuilder

    /* 目的:将数据转化成字符串时:用字符串的链接 还是 StringBuilder呢? */ public class Test{ public static void main(String[] a ...

随机推荐

  1. axis和cxf集成Springmvc的使用

    一.使用axis用wsdl生成Webservice: 工具:有axis插件的eclipse,wsdl文件: 操作步骤: 新建工程-->选择wsdl文件-->右键选择Webservice-- ...

  2. sqoop使用的问题

    找不到表 17/05/02 18:15:47 ERROR tool.ImportTool: Imported Failed: There is no column found in the targe ...

  3. Dubbo服务集群、服务启动依赖检查

    一.什么叫Dubbo服务集群 指把同一个服务部署到多台机器,然后通过Dubbo服务集群的容错配置实现一台机器的服务挂掉之后自动切换到另外的一台机器 二.Dubbo服务集群容错配置--集群容错模式 标签 ...

  4. 2—sat

    模型的解决方法看论文<利用对称性解决2-SAT问题> HDU1814 :难度1.5 HDU1824: 难度 2 HDU1815: 难度3 HDU1816: 对于每两个人,二选一HDU181 ...

  5. Collection和Map的默认扩容参数

    初始大小:调用无参构造函数时默认的容量 加载因子:超过 (当前容量*加载因子) 时会进行扩容 扩容因子:扩容时增加的容量为 (当前容量*扩容因子)        容器         初始容量    ...

  6. angular实现输入框输入添加 搜索框查询

    !DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&g ...

  7. Linux-问题集锦(1)

    一. 某用户只读特定文件夹 只读目录 :  /home/www/yqz/logs 1.  创建用户        useradd ReadOnly        passwd ReadOnly 2. ...

  8. win10 uwp 从StorageFile获取文件大小

    本文主要:获取文件大小 private async Task<ulong> FileSize(Windows.Storage.StorageFile file) { var size = ...

  9. php的序列化和反序列化有什么好处?

    序列化是将变量转换为可保存或传输的字符串的过程:反序列化就是在适当的时候把这个字符串再转化成原来的变量使用.这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性. PHP 中的序列化和反序列 ...

  10. 浅谈javascript继承体系

    最近做web项目,接触了jquery等框架,虽然使用方便,但是还是想学习下Javascript,今天分享下最近对js原型继承的理解,不足之处欢迎指正. 一.构造器的原型属性与原型对象 刚接触js时通常 ...