java中的斜杠和反斜杠,老生常談java路徑中的反斜杠和斜杠的區別

JAVA中的斜杠

有正斜杠與反斜杠之分,正斜杠,一般就叫做斜杠,符號為“/”;反斜杠的符號為“\”。

斜杠(/)在JAVA中沒有什么特別的意義,就是代表一個字符‘/';

反斜杠(\)則不然,它和緊跟著它的那個字符構成轉義字符,如“\n”(換行)、“\””(字符‘”‘)等,所以在字符串中要表示字符'\'要用“\\”來表示,例:如果你這樣定義一個字符串String s = “name\sex”是錯誤的,要這樣定義String s = “name\\sex”;

注意:在正則表達式中的“\\”表示和后面緊跟著的那個字符構成一個轉義字符(姑且先這樣命名),代表著特殊的意義;所以如果你要在正則表達式中表示一個反斜杠\,應當寫成”\\\\”。如果你這樣獲得一個Matcher,Matcher m= Pattern.compile(“\\”).matcher(“\\”)將會報錯,你應當這樣寫Matcher m = Pattern.compile(“\\\\”).matcher(“\\”)才是正確且匹配的

接下來我們來看一下String類中replace(CharSequencetarget,CharSequence replacement)方法與replaceAll(String regex,String replacement)方法的區別:

我們先看一個例子:

public static voidmain(String[] arg) throws OgnlException {

String s="sdf\\a\\aa";

//把s中的反斜杠\ 替換為\\

System.out.println(s);

System.out.println(s.replaceAll("\\\\","\\\\\\\\"));

System.out.println(s.replace("\\","\\\\"));

}

可以看出上面兩種都返回相同的替換結果。

這 里的關鍵是String.replaceAll()是用regular expression 來作為參數的。但是java本身的字符串對于轉義符\也有類似的處理。首先,java會把“\\\\”解釋成一個字符串(其中包含兩個char)。接下來,由于replaceAll是以正則表達式作為參數,所以“\\”被解釋成一個regex。對于一個regex來說這就代表著一個字符,就是“\”。對后面的那個8個\來說,最終會被解釋成“\\”。

換言之,假設String.replaceAll()是以普通字符串,而不是regex作為參數,那么這樣寫代碼: String target = source.replaceAll('\\','\\\\'); 就可以了。

以上這篇老生常談java路徑中的反斜杠和斜杠的區別就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。

時間: 2017-04-23

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530127.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530127.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530127.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

小程序 php cookie,微信小程序使用Cookie

微信小程序使用Cookie微信小程序不支持Cookie,因此,需要借助小程序的數據緩存來實現Cookie.環境: mpvue fly.js登錄成功后,在處理登錄驗證的method里,加入以下內容保存Cookie:wx.setStorageSync("sessionid",response.headers["set-cookie"][0])我對fly.j…

php對象好用嗎,在數據庫中使用對象的好處_php

我們都知道如何從mysql獲取我們需要的行(記錄),讀取數據,然后存取一些改動。很明顯也很直接,在這個過程背后也沒有什么拐彎抹角的。然而對于我們使用面對對象的程序設計(OOP)來管理我們數據庫中的數據時,這個過程就需要大大改進一…

linux apache php顯示源碼,linux 源碼安裝apache PHP 問題

sudo ./configure --prefix/var/php --with-apxs2/usr/local/apache2/bin/apxsLoadModule php5_module modules/libphp5.soDirectoryIndex index.html index.html.var .phpa-bash-3.2$ pwd/usr/local/apache2/htdocs-bash-3.2$ cat info.phpphpinfo();?>打開info.ph…

mysql臨時表的的理解,如何理解存儲過程中已存在的mysql臨時表?

它在創建表時具有IF NOT EXISTS(13.1.17. CREATE TABLE Syntax)選項,在這種情況下可以使用.例:DELIMITER $$CREATE PROCEDURE temp_sp1()BEGINCREATE TEMPORARY TABLE IF NOT EXISTS temp_table (col2 int(11) DEFAULT NULL,col3 int(11) DEFAULT NULL);INSERT INTO…

python 發郵件 抄送,Python調用outlook發送郵件,發送給多人、抄送給多人并帶上附件...

我的報告目錄具體解釋在代碼中有詳細注釋import win32com.client as win32import datetime, osaddressee test01qq.com;test02jd.com#收件人郵箱列表cc test02163.com;test03alibaba.com#抄送人郵件列表mail_path os.path.join(rC:\Users\songlihui\PycharmProjects\test001…

php阻止輸入sql,在PHP中全面阻止SQL注入式攻擊之三

一、 建立一個安全抽象層我們并不建議你手工地把前面介紹的技術應用于每一個用戶輸入的實例中,而是強烈推薦你為此創建一個抽象層。一個簡單的抽象是把你的校驗方案加入到一個函數中,并且針對用戶輸入的每一項調用這個函數。當然,我們還可以創…

Oracle12081,【Oracle介質】Oracle 12C Linux x86-64 最新OPatch patch 6880880 12.2.0.1.7

天萃荷凈Linux x86-64 補丁程序6880880: OPatch patch of version 12.2.0.1.7 for Oracle software releases 12.1.0.x (installer) and 12.2.0.x (AUG 2016)上次更新時間 2016-8-26 上午1:48 (8 天前)產品 Oracle Global Lifecycle Management OPatc…

如何使用oracle ebs,Oracle EBS進行集成的實際操作步驟

我們今天主要向大家介紹的是如何使用WebService和Oracle EBS進行集成,以及在使用WebService和Oracle EBS進行集成時,所需要的一些項目的描述,以下的文章就是對相關內容的描述。架構系統從總體上分為兩部分,一部為企業的EBS及接口系…

linux nls_lang oracle,linux操作系統環境變量LANG和NLS_LANG的區別

例如:復制代碼代碼如下:export LANGzh_CN.GB2312export NLS_LANGAMERICAN_AMERICA.ZHS16GBK$export LANGzh_CN.GB2312$date2012年 11月 27日 星期二 16:20:35 CST顯示是中文界面。復制代碼代碼如下:$export NLS_LANGAMERICAN_AMERICA.ZHS16GBK$sqlplus / as sysdbaS…

oracle監聽 3個配置文件,Oracle 11g 監聽 配置修改 說明

這里我們看2個比較常用的操作。1. 停止寫listener log在某些特定的場合可能會有這樣的需求。控制這個功能的參數是LOG_STATUS。 官網對這個參數的說明:To turn listenerlogging on or off.--在OS層面直接使用:lsnrctl SET LOG_STATUS {on | off}--在LSNR…

suse linux如何重置密碼忘記,SUSE?Linux忘記root密碼的處理辦法

GRUB修改法注意:此辦法僅適用SLES8、SLES9,不適用于SLES10,SLES10請用光盤修改法。此辦法不適合用于grub啟動超時時間為0的機器,因為grub超時時間設置為0后,不能編輯grub選項,此類機器必須使用光盤或網絡引…

linux怎么啟動端口服務,Linux 根據端口快速停止服務并啟動的辦法

ll /proc/7167結果為:[rootcentos76 deploy]# ll /proc/7167total 0dr-xr-xr-x 2 root root 0 Jun 25 11:13 attr-rw-r--r-- 1 root root 0 Jun 25 11:13 autogroup-r-------- 1 root root 0 Jun 25 11:13 auxv-r--r--r-- 1 root root 0 Jun 25 11:05 cgroup--w------- 1 root …

linux進程增刪改查,iptables的增刪改查

iptables是自帶的防火墻,功能強大,學習起來需要一段時間,下面是一些習iptables的時候的記錄。如果iptables不熟悉的話可以用apf,是一款基于iptables的防火墻,挺好用的。一,安裝并啟動防火墻[root ~]# /etc/init.d/ipta…

重裝系統 linux啟動windows系統文件在哪里,Win-Lin雙系統重裝Windows找回Linux啟動

第一系統Windows,第二系統Linux:Ubuntu18.10;1. 重新安裝Windows系統后,使用Ubuntu的安裝光盤,或啟動U盤啟動電腦;2. 選擇:Try Ubuntu ;3. 進入Ubuntu界面,打開命令行終端(Ctrl Alt…

linux遠程監控畢業設計,畢業設計論文:基于嵌入式Linux遠程監控系統的設計與實現.doc...

摘 要可編程邏輯控制器(PLC)不僅在工業控制中應用越來越廣泛,而且在其他領域的應用也逐漸擴大,例如:電力、化工、能源、水利等。由于它的功能比較強大、使用安全可靠、維護簡單方便的優點,在很多地方已經取代了繼電器電路的邏輯控…

linux卡死在選擇內核界面,求助:am3352 linux內核啟動時卡在 Starting kernel ...

這是用光盤里的uImage的輸出信息:U-Boot# tftp 0x82000000 bakuImagelink up on port 0, speed 100, full duplexUsing cpsw deviceTFTP from server 192.168.0.231; our IP address is 192.168.0.224Filename bakuImage.Load address: 0x82000000Loading: ########…

u盤分為windows和linux啟動,【電腦軟件】Ventoy 官方版,一個U盤,同時擁有啟動win+linux+Ubuntu...

軟件介紹:Ventoy是一個制作可啟動U盤的開源工具。有了Ventoy你就無需反復地格式化U盤,你只需要把ISO文件拷貝到U盤里面就可以啟動了,無需其他操作。 你可以一次性拷貝很多個不同類型的ISO文件,在啟動時Ventoy會顯示一個菜單來選擇…

linux cpu頻率軟件,linux cpu頻率控制

安裝cpufrequtils: sudo apt-get install cpufrequtils查看cpu: sudo cpufreq-info設置cpu模式: cpufreq-set -g {powersave, userspace, ondemand, conservative, performance}對應于{最省電(最低頻率)&#xff0…

linux var 空間不足,/var空間不足怎么辦?(求安全保險的方法)

最近想把Ubuntu從12.04升級到13.10,可/var目錄下的空間不足,怎么處理這個問題?提示需要850M多的空間,可從以下的信息來看,里面的東西我幾乎是沒得刪除了。# du -h --max-depth1 /var92K /var/crash4.0K /var/local4.0K…

linux 權限測試,linux下檢測root權限的shell腳本

個人心血來潮時寫的一個腳本,比較粗糙,功能也很簡單,大家有興趣的可以拿去改改。本腳本之爭對系統中UID為0的用戶#!/bin/bash #大家都知道echo test my computer is or not safety #顯示“ test my computer is or not saf…