2017-12-02 153 views
1

對於下面的輸入im期望所有以「|」分隔的字符串在數組中可用。但只有第一個字符串可用,下一個字符串部分可用,其餘字符串根本不可用。請幫助我理解它。我探索了所有幫助文檔和以前的stackoverflow的東西,但無法解決它。我嘗試了split(String regex,int limit),但沒用。我不想取代空白,因爲我需要保留該空白。Java拆分(「\ |」)不適用於空間字符串

輸入 「1 |紐約| 1345 | 134 | 45634」 預期成果是:1,紐約,1345,134,45634 實際輸出爲:1,新

public class test1 { 

    public static void main(String[] args) { 

     Scanner scanner = new Scanner(System.in); 
     String strinp=scanner.next(); 
     //System.out.println(strinp.replaceAll(" ", "")); 
     String[] strArr=strinp.split("\\|"); 
     //System.out.println(Arrays.deepToString(strArr)); 
     for (String s:strArr) { 
      System.out.println(s); 

     } 
    } 

} 
+0

嗯,這個在這裏產生的預期輸出: 字符串strinp =「1 |紐約| 1345 | 134 | 45634「; String [] strArr = strinp.split(「\\ |」); (String s:strArr){ System.out.println(s); } –

+0

public static void main(String [] args){ \t \t Scanner scanner = new Scanner(System.in); \t String strinp = scanner.nextLine(); \t strinp = strinp.replace('|',','); \t System.out.println(strinp); \t} 輸入: 「1 |紐約| 1345 | 134 | 45634」 輸出: 「1,紐約,1345,134,45634」 –

回答

3

scanner.next()上分裂空間本身。所以你的第一個scanner.next()調用讀取1|New然後你分裂。

使用scanner.nextLine()來讀取整行,它將被成功分割。

+0

你打我吧 –

0

變化:

String strinp = scanner.next(); 

要:

String strinp = scanner.nextLine(); 
0

或者,你可以聲明掃描器:

Scanner scanner = new Scanner(System.in).useDelimiter("\\n");