我試圖得到一個文件名的擴展,但由於某些原因,我不能讓分裂的工作:爲什麼這個分裂()失敗?
System.out.println(file.getName()); //gNVkN.png
System.out.println(file.getName().split(".").length); //0
我在做什麼錯?
我試圖得到一個文件名的擴展,但由於某些原因,我不能讓分裂的工作:爲什麼這個分裂()失敗?
System.out.println(file.getName()); //gNVkN.png
System.out.println(file.getName().split(".").length); //0
我在做什麼錯?
split()
需要一個正則表達式,而不是一個分離器串分割通過。正則表達式"."
意味着「任何單個字符」,所以它會分裂的任何東西。拆就字面點使用:
file.getName().split("\\.")
也許你應該重讀與API文檔的split(java.lang.String)
你傳遞的字符串是一個正則表達式。
嘗試使用
split("\\.")
您需要的雙反斜線因爲\.
是在Java字符串無效逃逸。所以你需要在javastring中逃避反斜槓本身。
String.split()
要求在其參數中使用正則表達式,在正則表達式中,.
將匹配任何字符。爲了使它工作,你需要添加一個\
,像這樣:
System.out.println(file.getName().split("\\.").length);
你需要一個反斜槓逃脫點,所以正則表達式知道你想要一個實際點。你需要其他的反斜槓逃脫第一個反斜槓,即告訴Java的你想擁有你的字符串中的實際反斜槓。
閱讀String.split和regular expressions的Javadoc以獲得更多信息。
一般情況下,你可以使用 Pattern.quote(STR) 以獲得嚴格匹配'str'正則表達式。 – Ramon 2009-10-31 11:12:57
很好的答案,謝謝! – etheros 2009-10-31 11:14:25
難道有人說** **正則表達式:d http://xkcd.com/208/ – 2009-10-31 11:56:30