Java Split(" \\ |")不适用于带空格的字符串

时间:2017-12-02 19:14:28

标签: java split

对于下面的输入,我希望所有用" |"分隔的字符串以阵列形式提供。但只有第一个字符串可用,下一个字符串部分可用。其余字符串根本不可用。请帮助我理解它。我探索了所有的帮助文档和以前的stackoverflow的东西,但无法解决它。我尝试使用split(String regex,int limit),但没有用。我不想替换空白,因为我需要保留它。

输入" 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);

        }
    }

}

3 个答案:

答案 0 :(得分:3)

scanner.next()分隔空格本身。因此,您的第一个scanner.next()来电会显示1|New,然后您将其拆分。

使用scanner.nextLine()读取整行,它将被成功拆分。

答案 1 :(得分:0)

变化:

String strinp = scanner.next();

要:

String strinp = scanner.nextLine();

答案 2 :(得分:0)

或者您可以将扫描程序声明为:

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