我想下面的代碼(在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]
,我總是得到整個字符串。任何人都可以提出可能的原因嗎?
我想下面的代碼(在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]
,我總是得到整個字符串。任何人都可以提出可能的原因嗎?
這是因爲split
預計正則表達式。由於「$」是正則表達式中的行尾標記,因此僅在字符串的末尾進行分割。
您應該使用
String str = "abc$xyz";
String[] split_ = str.split("\\$");
System.out.println(split_.length);
代替。
這會轉義「$」,以便將其視爲文字字符(並使用兩個斜線將反斜線作爲字符串文字的一部分進行轉義)。
$
字符是一個元字符,意思是「行尾」,而不是字面美元符號。
使用兩個反斜槓轉義$
字符,其中一個用於逃避正則表達式中的$
,另一個用於反斜線的Java轉義。
String[] split_ = str.split("\\$");
.split()
使用正則表達式,這就是爲什麼...
試試這個:
String str = "abc$xyz";
String[] split_ = str.split("\\$");
System.out.println(split_.length);
http://stackoverflow.com/questions/2168831/string-split-function-in-java-does-not-work –
*************致主持人:你是歡迎刪除此問題。請不要再贊成。 – Jake