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"}]

 

posted @ 2017-11-09 15:55  shirayner  阅读(3118)  评论(0编辑  收藏  举报