使用分隔符进行Java输入解析| (管)

时间:2018-01-07 15:54:50

标签: java parsing

我知道管道是一个特殊字符,我需要使用:

        Scanner input = new Scanner(System.in);
        String line = input.next();

        String[] columns = line.split("\\|");

将管道用作分隔符。但是当我从命令行解析时,它并没有按照预期工作。

e.g。

当我从文件中解析时,这才起作用。但是,当输入有一个空格时,每当我从命令行解析输入时,它就会给出超出界限的错误,因为它将单词拆分为两个数组元素。

输入

a|5|Hello|3

输出:

columns[0] = "a";
columns[1] = "5";
columns[2] = "Hello";
columns[3] = "3";

虫:

输入:

a | 5 | Hello World | 3;

输出:

columns[0] = "a";
columns[1] = "5";
columns[2] = "Hello";
columns[3] = "World";
columns[4] = "3";

我希望列[3]为" Hello World"。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

我认为您应该使用nextLine()而不是next()来获取用户的数据。

在我的情况下,它工作正常just click here 并检查源代码..

答案 1 :(得分:0)

next()只能读取输入直到空格。它无法读取由空格分隔的两个单词。此外, next()在读取输入后将光标放在同一行。 nextLine()读取包含单词之间空格的输入(即读取到行n的末尾)。

答案 2 :(得分:0)

  

扫描程序使用分隔符模式将其输入分解为标记,   默认情况下匹配空格。 Source

要克服,您应该使用nextline()方法。

String line = input.nextline();