2017-12-02 154 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");