JAVA轉義字符詳解

一.JAVA中反斜槓“\”的作用

在不同的系統中,路徑的分隔符不同,故需要做出判斷,並切換分隔符

VBS代碼中確實不用轉義,但是在JAVA或JS中,它採用的是C語言的語法,所以要轉義,引號內要雙寫\\表示一個反\。

① java 把字符串中的反斜槓(\)替換成(\\)

replaceAll裏面用的是正則表達式,所以字符串轉義一次,正則轉義一次,所以一個斜扛要寫4個,用replaceAll( "\\\\ ",   "\\\\\\\\ ");


二.split("\\.")什麼意思

1. 首先要明白split方法的參數含義:
public String[] split(String regex)根據給定的正則表達來式的匹配來拆分此字符串

2. 然後就要明確正則表達式的含義了:

  • '.'點 匹配除“\n”和"\r"之外的任何單個字符。

  • '\'表示轉義字符

\\會轉義成反斜槓,反斜槓本身就是轉義符,所有就成了“\.”,在進行轉義就是.,所以\\.實際上是“.”

三.正則表達式

正則表達式,又稱規則表達式。(英語:Regular Expression,在代碼中常簡寫爲regex、regexp或RE),計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本。

許多程序設專計語言都支持利用正則表達式進行字符串操作。例如,在Perl中就內建了一個功能強大的正則表達式引擎。正則表達式這個概念最初是由屬Unix中的工具軟件(例如sed和grep)普及開的。正則表達式通常縮寫成“regex”,單數有regexp、regex,複數有regexps、regexes、regexen。

四.Java中轉義字符反斜槓 \ 的代替方法 | repalceAll 內涵解析

4.1需求

現有一個字符串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"}


4.2實現方法

4.3Java 的replaceAll 內涵解析

使用Java的replaceAll(String regex, String replacement)函數,即用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)函數,第一個參數是一個正則表達式。在正則表達式中的“\”與後面緊跟的那個字符構成一個轉義字符,代表着特殊的意義,比如”\n”表示換行符等。所以,如果要在正則表達式中表示一個反斜槓\,則應當用\\表達 。但參數regex 首先會經過Java的一次轉義,若想表達兩個反斜槓 \\,則需四個反斜槓。

綜上所述:replaceAll 的第一個參數是正則表達式,故而要經過兩次轉義,一次Java、一次正則。因此就需要四個反斜槓纔可以匹配一個反斜槓。故而,替換一個反斜槓爲空的replaceAll的代碼即爲:
str1 = str.replaceAll("\\\\","");

4.4補充說明

參考網址:

https://blog.csdn.net/proteen/article/details/78885867

https://blog.csdn.net/north_easter/article/details/7904865

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章