欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中轉義字符反斜杠\的代替方法及repalceAll內涵解析

 更新時間:2019年08月04日 16:43:53   作者:我是一個程序媛  
這篇文章主要介紹了Java中轉義字符反斜杠\的代替方法及repalceAll內涵解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、需求

現(xiàn)有一個字符串str

String str = "{\\\"name\\\":\\\"spy\\\",\\\"id\\\\":\\\"123456\\\"}";
System.out.println("str = " + str);

在控制臺的輸出為:

str = {\"name\":\"spy\",\"id\":\"123456\"}

目標:將str轉化為標準的json格式串str1,以調用JsonUtil的方法,將字符串轉為map。即目標str1為:

str1 = {"name":"spy","id":"123456"}

二、實現(xiàn)方法

1. 使用 StringEscapeUtils中的轉義與反轉義

apache工具包common-lang中有一個很有用的處理字符串的工具類,其中之一就是StringEscapeUtils。利用它可方便地進行html、xml、java等的轉義與反轉義。

String str = "{\\\"name\\\":\\\"spy\\\",\\\"id\\\\":\\\"123456\\\"}";
System.out.println("原始 str = " + str);
String str1 = StringEscapeUtils.unescapeJava(str);
System.out.println("目標 str1 = " + str1);
//對應方法的StringEscapeUtils.escapeJava(str1);
//可將str1轉義回str

控制臺輸出:

原始 str = {\"name\":\"spy\",\"id\":\"123456\"}
目標 str1 = {"name":"spy","id":"123456"}

2. 使用Java的replaceAll方法

String str1 = str.replaceAll("\\\\","");
//控制臺str1的輸出為:{"name":"spy","id":"123456"}

三、Java 的replaceAll 內涵解析

使用Java的replaceAll(String regex, String replacement)函數(shù),即用replacement替換所有的regex匹配項,regex是一個正則表達式,replacement是字符串。

String str = "{\\\"name\\\":\\\"spy\\\",\\\"id\\\\":\\\"123456\\\"}";

(1)對于串str,Java將其進行轉義,\\ 表示 \ ,\” 表示 ” ,故而在Java內存中即為:
{\”name\”:\”spy\”,\”id\”:\”123456\”},然而,我們的目標是 {“name”:”spy”,”id”:”123456”},即將轉義字符 \ 替換為空。

(2)Java的replaceAll(String regex, String replacement)函數(shù),第一個參數(shù)是一個正則表達式。在正則表達式中的“\”與后面緊跟的那個字符構成一個轉義字符,代表著特殊的意義,比如”\n”表示換行符等。所以,如果要在正則表達式中表示一個反斜杠\,則應當用\\表達 。但參數(shù)regex 首先會經(jīng)過Java的一次轉義,若想表達兩個反斜杠 \\,則需四個反斜杠。

綜上所述:replaceAll 的第一個參數(shù)是正則表達式,故而要經(jīng)過兩次轉義,一次Java、一次正則。因此就需要四個反斜杠才可以匹配一個反斜杠。故而,替換一個反斜杠為空的replaceAll的代碼即為:

str1 = str.replaceAll("\\\\","");

四、補充說明

String的replaceAll 同Matcher.replaceAll. 如下是String的repalceAll的源碼實現(xiàn)。

public String repalceAll(String expr,String substitute){
  return Pattern.compile(expr).matcher(this).replaceAll(substitute);
}
 

大家可以注意到Pattern.compile(expr)的參數(shù)是正則表達式。故而:

錯誤寫法(運行報錯):

String tmp = Pattern.compile("\\").matcher("h\\").replaceAll("ello");

正確寫法:

String tmp = Pattern.compile("\\\\").matcher("h\\").replaceAll("ello");
//輸出為hello

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Java?如何接收kernel傳過來的數(shù)組(推薦)

    Java?如何接收kernel傳過來的數(shù)組(推薦)

    這篇文章主要介紹了Java?如何接收kernel傳過來的數(shù)組,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-08-08
  • Java設計模式中的單一責任原則詳解

    Java設計模式中的單一責任原則詳解

    這篇文章主要介紹了Java設計模式中的單一責任原則詳解,應該有且僅有一個原因引起類的變更,即單一指責原則要求一個借口或類只有一個原因引起變化,也就是一個接口或類只有一個職責,它就負責一件事情,需要的朋友可以參考下
    2023-11-11
  • 在Java中使用redisTemplate操作緩存的方法示例

    在Java中使用redisTemplate操作緩存的方法示例

    這篇文章主要介紹了在Java中使用redisTemplate操作緩存的方法示例,在Redis中可以存儲String、List、Set、Hash、Zset。感興趣的可以了解一下
    2019-01-01
  • 基于Spring Boot DevTools實現(xiàn)開發(fā)過程優(yōu)化

    基于Spring Boot DevTools實現(xiàn)開發(fā)過程優(yōu)化

    這篇文章主要介紹了基于Spring Boot DevTools實現(xiàn)開發(fā)過程優(yōu)化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • JAVA反射機制實例教程

    JAVA反射機制實例教程

    這篇文章主要介紹了JAVA反射機制,包括了Java反射機制的各種應用技巧,非常具有實用價值,需要的朋友可以參考下
    2014-09-09
  • mybatis中foreach報錯:_frch_item_0 not found的解決方法

    mybatis中foreach報錯:_frch_item_0 not found的解決方法

    這篇文章主要給大家介紹了mybatis中foreach報錯:_frch_item_0 not found的解決方法,文章通過示例代碼介紹了詳細的解決方法,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • Java web Hibernate如何與數(shù)據(jù)庫鏈接

    Java web Hibernate如何與數(shù)據(jù)庫鏈接

    這篇文章主要介紹了Java web Hibernate如何與數(shù)據(jù)庫鏈接,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • 詳解Java文件下載的幾種實現(xiàn)方式

    詳解Java文件下載的幾種實現(xiàn)方式

    這篇文章主要介紹了詳解Java文件下載的幾種實現(xiàn)方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • SpringBoot+Shiro+LayUI權限管理系統(tǒng)項目源碼

    SpringBoot+Shiro+LayUI權限管理系統(tǒng)項目源碼

    本項目旨在打造一個基于RBAC架構模式的通用的、并不復雜但易用的權限管理系統(tǒng),通過SpringBoot+Shiro+LayUI權限管理系統(tǒng)項目可以更好的幫助我們掌握springboot知識點,感興趣的朋友一起看看吧
    2021-04-04
  • Java創(chuàng)建二叉搜索樹,實現(xiàn)搜索,插入,刪除的操作實例

    Java創(chuàng)建二叉搜索樹,實現(xiàn)搜索,插入,刪除的操作實例

    下面小編就為大家分享一篇Java創(chuàng)建二叉搜索樹,實現(xiàn)搜索,插入,刪除的操作實例,具有很好的參考價值,希望對大家有所幫助
    2017-12-12

最新評論