Java_String_01_由转义字符串得到其原本字符串
在开发企业微信电子发票之拉取电子发票接口的时候,微信服务器会发送给我们一个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_由转义字符串得到其原本字符串的更多相关文章
- Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助
Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助 目录 Pychar ...
- 字符串类型 str-->转义符-->字符串格式化-->占位符-->综合案例
# ###字符串类型 str """ 用引号起来的就是字符串 三种引号:单引号 双引号 三引号 """ """ ...
- Python 入门(一)定义字符串+raw字符串与多行字符串
定义字符串 前面我们讲解了什么是字符串.字符串可以用''或者""括起来表示. 如果字符串本身包含'怎么办?比如我们要表示字符串 I'm OK ,这时,可以用" " ...
- Java 字符串(二)字符串常用操作
一.连接字符串 1.连接多个字符串 使用“+”运算符可以实现连接多个字符串的功能.“+” 运算符可以连接多个运算符并产生一个 String 对象. 2.连接其他数据类型 字符串与其他基本数据类型进行连 ...
- python字符串、字符串处理函数及字符串相关操作
python字符串.字符串处理函数及字符串相关操作 字符串介绍 python字符串表示 Python除处理数字外还可以处理字符串,字符串用单撇号或双撇号包裹: >>> 'spam e ...
- Python:Base1(数据类型,print语句,变量,定义字符串,raw字符串与多行字符串,Unicode字符串,整数和浮点数运算,布尔类型运算)
1.Python中数据类型: 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据 ...
- JS字符串替换函数:Replace(“字符串1″, “字符串2″),
JS字符串替换函数:Replace(“字符串1″, “字符串2″), 1.我们都知道JS中字符串替换函数是Replace(“字符串1″, “字符串2″),但是这个函数只能将第一次出现的字符串1替换掉, ...
- C#算法之判断一个字符串是否是对称字符串
记得曾经一次面试时,面试官给我电脑,让我现场写个算法,判断一个字符串是不是对称字符串.我当时用了几分钟写了一个很简单的代码. 这里说的对称字符串是指字符串的左边和右边字符顺序相反,如"abb ...
- 将数据转化成字符串时:用字符串的链接 还是 StringBuilder
/* 目的:将数据转化成字符串时:用字符串的链接 还是 StringBuilder呢? */ public class Test{ public static void main(String[] a ...
随机推荐
- 17.tslib安装以及使用
1.先在网上下载 tslib-1.4.tar.gz压缩包 2.然后在ubuntu编译: tar xzf tslib-1.4.tar.gz cd tslib ./autogen.sh mkdir tmp ...
- java人员正确使用IDEA 的方式
博主是Java开发人员,以前一直都用myeclipse来开发的,说实话感觉myeclipse毫无美感可言,后来经过同事介绍,认识了IDEA,一眼就相中了IDEA黑色的主题风格,自此就抛弃了旧爱myec ...
- Linux+Apache2.4+PHP5.6+MySQL5.6源码安装步骤
一.安装Apache 若要安装apache服务器软件,需要安装以下几个依赖软件 apr-1.4.6.tar.gz 下载地址:http://apr.apache.org/ apr-util-1.4.1. ...
- JAVA提高一:静态导入、可变参数、增强型for循环、装拆箱
国庆假期已结束,假期8天,全部在家带娃,体会到了妻子的不容易,需要好好努力来多赚钱了,言归正传.10月份开始进去JAVA 高级语法知识学习,本节复习学习的为:静态导入.可变参数.增强型for循环.装拆 ...
- Sublime Text保存文件时自动去掉行末空格
修改一个Sublime Text的用户配置,其中这个配置就是"保存文件时自动去掉每行结束后多余的空格",具体操作如下: 在Sublime Text菜单栏中找到preferences ...
- There is no getter for property named xxx' in 'class java.lang.xxx'
在xxxMapper.xml我们使用sql片段来提高sql代码的复用性,当时新手传入参数时常常出现这样的错误: There is no getter for property named xxx' i ...
- Django扩展自定义manage命令
使用django开发,对python manage.py ***命令模式肯定不会陌生.比较常用的有runserver,migrate... 本文讲述如何自定义扩展manage命令. 1.源码分析 ma ...
- Echarts数据可视化series-radar雷达图,开发全解+完美注释
全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...
- Js全选 添加和单独删除
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Unity 使用 陀螺仪 实现 《王者荣耀》 登入界面 背景动态效果
在 <王者荣耀> 登入界面 左右上下晃动手机(有些手机不支持)可以看到背景在变化 我使用的是iPhone SE 效果如下: 对比两张图片的左下角 可以看到差异 至于为什么要这么做: 1.使 ...