我剛注意到.split()函數有些奇怪,如果我傳遞|它將字符串分割成字符。我對它進行了測試:分割字符串java
String s = "Hiya there | how are you | im fine thanks";
for(String str : s.split("|")) {
System.out.println(str);
}
然後它將它分成不同的字符。我嘗試了反斜槓,它沒有工作。
沒有人知道如何通過| ?
我剛注意到.split()函數有些奇怪,如果我傳遞|它將字符串分割成字符。我對它進行了測試:分割字符串java
String s = "Hiya there | how are you | im fine thanks";
for(String str : s.split("|")) {
System.out.println(str);
}
然後它將它分成不同的字符。我嘗試了反斜槓,它沒有工作。
沒有人知道如何通過| ?
String#split
需要一個正則表達式作爲參數,其中|
有特殊含義,用於alternation
。
你可以用兩種方式來讓自己出來的: -
逃生|
。請記住,在Java中,你需要使用雙反斜線: -
s.split("\\|");
使用字符類: -
s.split("[|]");
在字符類,任何字符除了-
,即當在中間使用時,也沒有任何特別的含義。所以,[|]
只是一個|
,沒有別的。
是的,你還需要在字符類別中轉義]
,如@JanDvorak的評論中所指定。
注意'''需要在角色類中也要逃脫 –
@JanDvorak。是的。感謝您指點。 :) –
|
是正則表達式世界metacharecter,爲了把它當作一個普通的字符,你必須用一個反斜槓\\|
逃吧:
public static void main(String...args) throws ParseException{
String s = "Hiya there | how are you | im fine thanks";
for(String str : s.split("\\|")) {
System.out.println(str);
}
}
我總是在正方括號中使用正則表達式,因爲它們通常會隨着新需求的增長而變大,並且使用方括號,與反斜槓相比,它們易於理解。
public static void main(String...args) throws ParseException{
String s = "Hiya there | how are you | im fine thanks";
for(String str : s.split("[|]")) {
System.out.println(str);
}
}
嘗試添加_two_反斜槓。我知道這聽起來很奇怪,但是... –
可能對此有興趣閱讀:http://hoskinator.blogspot.com/2006/11/trouble-using-pipe-with-stringsplit.html –