編程中常見的斜杠("/"和"\")問題

正斜杠,又稱左斜杠疟游,符號是"/"呼畸;反斜杠,也稱右斜杠颁虐,符號是"\"蛮原。

用在目錄中

在Unix/Linux中,路徑的分隔采用正斜杠"/"另绩,比如"/home/hutaow"儒陨;而在Windows中花嘶,路徑分隔采用反斜 杠"\",比如"C:\Windows\System"蹦漠。

有時我們會看到這樣的路徑寫法椭员,"C:\\Windows\\System",也就是用兩個反斜杠來分隔路徑笛园,這種寫法在網(wǎng)絡應用或編程中經(jīng) 嘲鳎看到,事實上研铆,上面這個路徑可以用"C:/Windows/System"來代替埋同,不會出錯。但是如果寫成了"C:\Windows\System"棵红, 那就可能會出現(xiàn)各種奇怪的錯誤了凶赁。

至于上述問題出現(xiàn)的原因,要從字符串解析這方面來分析逆甜。

學過編程的人都應該知道虱肄,在C里面,輸出字符串時忆绰,如果想輸出一個換行浩峡,那就要加上'\n'這個標志,類似的错敢,輸出一個TAB翰灾,就加上' \t',也就是說稚茅,反斜杠("\")這個符號會把跟在它后面的字符結合起來轉義成其它字符纸淮。根據(jù)這個原理,如果想輸出雙引號('"')亚享,就需要輸入' \"'咽块,這樣才會將包含了雙引號的字符串正確的寫入內存中。那么如果想輸入一個反斜杠呢欺税?很簡單侈沪,只要敲'\\'就可以了。

看到這里或許有些人已經(jīng)看出眉目了晚凿,如果"C:\Windows\System"這個路徑字符串交給C編譯器編譯亭罪,實際寫入內存的字符串并沒 有包含反斜杠"\"霞玄,甚至緊跟在反斜杠后面的字母也一起被轉義成了其它的字符饥漫,再次調用的話勢必會出問題。

字符串解析不僅僅局限于C編譯器唆阿,Java編譯器、一些配置文件的解析箩祥、Web服務器等等院崇,都會遇到對字符串進行解析的這個問題,由于傳統(tǒng)的 Windows采用的是單個斜杠的路徑分隔形式袍祖,導致在對文件路徑進行解析的時候可能發(fā)生不必要的錯誤底瓣,所以就出現(xiàn)了用雙反斜杠"\\"分隔路徑的形式。 不管解析引擎是否將反斜杠解析成轉義字符盲泛,最終在內存中得到的都是"\"濒持,結果也就不會出問題了键耕。

由此也可以看出Windows或者說DOS在設計初期考慮不夠周全寺滚,為了和Unix一些特征區(qū)別開來,將Unix中的正斜杠"/"分隔路徑方 式改變成了反斜杠"\"屈雄。這樣改變導致的一個問題就是在早期DOS命令行中村视,正常的文件名是不能包含空格的,如果包含了空格酒奶,會導致輸入這樣的文件名時蚁孔, 命令解析無法將其和參數(shù)區(qū)分開。例如惋嚎,想要進入"hutaow yuan"這個目錄(在此先忽略8.3命名規(guī)則)杠氢,直接輸入"cd hutaow yuan",命令行會將其解析為進入"hutaow"目錄另伍,而后面的"yuan"做參數(shù)鼻百,這顯然不是所期望的。

而在Unix中摆尝,文件名如果包含空格温艇,可以直接在空格前加上反斜杠"\"進行轉義,從而很好的和命令參數(shù)區(qū)別出來(參數(shù)之間一般使用空格分 隔)堕汞。還是上面的例子勺爱,在Unix中,只要輸入"cd hutaow\ yuan"(在yuan前面的空格前加上"\")讯检,命令行會正確的辨認出"hutaow yuan"并進入這個目錄琐鲁。

當然,現(xiàn)在Windows的后續(xù)版本已經(jīng)使用其它方法(比如文件名用雙引號括兹俗啤)解決了空格問題围段。

轉義字符

如“\n”(表示換行)、“\””(表示字符‘”’)等,所以在字符串中要表示字符“\”要用“\”來表示

代碼如下:

//因為\s不是轉義字符挡毅,如果你這樣定義一個字符串,編譯器會報錯

Strings ="abcd\s123";

//要這樣定義獲取

String s = "abcd\123"Strings ="abcd\\s123";

特殊:在正則表達式中

在正則表達式中的“\”表示和后面緊跟著的那個字符構成一個轉義字符蒜撮,代表著特殊的意義;所以如果你要在正則表達式中表示一個反斜杠\,應當寫成“\\”段磨。因為在正則要經(jīng)過兩次轉義取逾,因此就需要四個反斜杠才可以匹配一個反斜杠。Java先轉義成“\”苹支,在由正則進行一次轉義砾隅,就結果就為“\”。

一句話:表示正則表達式里面的斜杠“\”债蜜,然后再用字符串表示出來晴埂。而這2個斜杠分別需要一個轉義符,這樣就成了4個斜杠在正則表達式里面表示一個斜杠寻定。

下面代碼示例:

//將會報錯,你應當這樣寫Matcher m =

Matcher m = Pattern.compile(“\\”).matcher(“\\”);

//這才是正確且匹配的

Pattern.compile(“\\\\”).matcher(“\\”);

String類中兩個方法的使用:

1儒洛、replace(CharSequence target,CharSequence?replacement)

1、replaceAll(String regex, String replacement)

public static void main(String[] arg) {

String s ="abcd\\123\\\\dcba";

System.out.println(s); ? //結果是abcd\123\\dcba

System.out.println(s.replaceAll("\\\\", "\\\\\\\\")); ? //結果是abcd\\123\\\\dcba狼速,記住\\\\表示\

System.out.println(s.replace("\\", "\\\\\\\\")); ?? //結果是abcd\\\\123\\\\\\\\dcba

}

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末琅锻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子向胡,更是在濱河造成了極大的恐慌恼蓬,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件僵芹,死亡現(xiàn)場離奇詭異处硬,居然都是意外死亡,警方通過查閱死者的電腦和手機拇派,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門荷辕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人攀痊,你說我怎么就攤上這事桐腌。” “怎么了苟径?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵案站,是天一觀的道長。 經(jīng)常有香客問我棘街,道長蟆盐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任遭殉,我火速辦了婚禮石挂,結果婚禮上,老公的妹妹穿的比我還像新娘险污。我一直安慰自己痹愚,他們只是感情好富岳,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拯腮,像睡著了一般窖式。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上动壤,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天萝喘,我揣著相機與錄音,去河邊找鬼琼懊。 笑死阁簸,一個胖子當著我的面吹牛,可吹牛的內容都是我干的哼丈。 我是一名探鬼主播启妹,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼削祈!你這毒婦竟也來了翅溺?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤髓抑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后优幸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吨拍,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年网杆,在試婚紗的時候發(fā)現(xiàn)自己被綠了羹饰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡碳却,死狀恐怖队秩,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情昼浦,我是刑警寧澤馍资,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站关噪,受9級特大地震影響鸟蟹,放射性物質發(fā)生泄漏。R本人自食惡果不足惜使兔,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一建钥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧虐沥,春花似錦熊经、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悉盆。三九已至,卻和暖如春馋吗,著一層夾襖步出監(jiān)牢的瞬間焕盟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工宏粤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留脚翘,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓绍哎,卻偏偏與公主長得像来农,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子崇堰,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理沃于,服務發(fā)現(xiàn),斷路器海诲,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 歡迎光臨我的博客拓跋的前端客棧繁莹,這個是原文地址。如果您發(fā)現(xiàn)我文章中存在錯誤特幔,請盡情向我吐槽咨演,大家一起學習一起進步φ...
    zhleven閱讀 9,294評論 0 4
  • 推薦幾個正則表達式編輯器 Debuggex :https://www.debuggex.com/ PyRegex:...
    木易林1閱讀 11,493評論 9 151
  • 一、潛龍勿用 卵石浴細水蚯斯,黃花擻微塵薄风。杓斗轉木象,凡元落荊門拍嵌。金龍吐玉露遭赂,昏蔽深山林。隆中好風景横辆,分野多靈神撇他。茅檐...
    夢飲千樽月閱讀 489評論 0 49
  • 一、目標:(1.22-4.22) 1.完美的伴侶:①智慧龄糊,親近佛法逆粹,我們一起去做很多有意義的事情,比如堅持去做義工...
    柔光寶寶閱讀 190評論 0 0