2015-11-19 104 views
-1

我想下面的代碼(在Ubuntu Linux 12.04在Eclipse月神IDE中運行Java版本1.7):Java的字符串分割行爲 - 斯普利特的美元符號

String str = "abc$xyz"; 
String[] split_ = str.split("$"); 
System.out.println(split_.length); 

我總是得到長度爲1的分裂。如果我嘗試打印split_[0],我總是得到整個字符串。任何人都可以提出可能的原因嗎?

+0

http://stackoverflow.com/questions/2168831/string-split-function-in-java-does-not-work –

+0

*************致主持人:你是歡迎刪除此問題。請不要再贊成。 – Jake

回答

0

這是因爲split預計正則表達式。由於「$」是正則表達式中的行尾標記,因此僅在字符串的末尾進行分割。

您應該使用

String str = "abc$xyz"; 
String[] split_ = str.split("\\$"); 
System.out.println(split_.length); 

代替。

這會轉義「$」,以便將其視爲文字字符(並使用兩個斜線將反斜線作爲字符串文字的一部分進行轉義)。

+0

@Downvoter我犯了什麼錯誤嗎?我會很高興知道它是什麼,所以我可以糾正它。 – resueman

+0

這對我有用,謝謝! – Jake

+0

有人也低估了我的問題:( – Jake

0

$字符是一個元字符,意思是「行尾」,而不是字面美元符號。

使用兩個反斜槓轉義$字符,其中一個用於逃避正則表達式中的$,另一個用於反斜線的Java轉義。

String[] split_ = str.split("\\$"); 
0

.split()使用正則表達式,這就是爲什麼...

試試這個:

String str = "abc$xyz"; 
String[] split_ = str.split("\\$"); 
System.out.println(split_.length);