如何阅读与scanner.next空白()(How to read whitespace with

2019-07-01 13:01发布

我有一台扫描仪,并设置分隔符为“”,但它仍然不会与next()方法读取空格。 我知道nextline()的作品,但我需要逐个检查输入的每一个字符,包括空格; 它是一个复杂的数据分析问题。 我很为难,虽然。 谷歌已经变成了什么。

谁能帮我这个? 我想倒车空白成特殊字符,然后分析字符的目的,扭转它放回一个空格,字符串中包含的...这似乎矫枉过正的方式虽然! 是否有这样做的更优雅的方式?

编辑:我的主要任务是,采取一个串,过目一下字符一个字符,多次,以检查各项任务的数据。 你必须检查了很多次,每次一个字符,所以我认为扫描仪类将是我最好的选择,因为它可以容易的工作(至少对我来说)。 这是我的任务。 是否有更简单的方法来进行此事?

Answer 1:

Scanner scanner = new Scanner(file).useDelimiter("'")

但是,这是非常低效的。 更好的办法,就是:通过字符读取字符:

private static void readCharacters(Reader reader)
        throws IOException {
    int r;
    while ((r = reader.read()) != -1) {
        char ch = (char) r;
        doSomethingWithChar(ch);
    }
}

另请参见这里



Answer 2:

尝试.useDelimiter("(\\b|\\B)")

它会利用每一个字符的边界作为分隔符。

键入的内容用户将下面的代码完全相同打印。 没有字符将被忽略,包括空格。

Scanner charScanner = new Scanner( System.in ).useDelimiter( "(\\b|\\B)" ) ;
while( charScanner.hasNext() ) 
    System.out.print( charScanner.next() ) ;


Answer 3:

代替

scanner.next();

使用

scanner.nextLine();

这样,您就解决分隔符的问题。



Answer 4:

使用BufferedReader读取一行输入,然后遍历字符串中for循环,每个工作char
您可以检查一个字符是否是一个空白的Character.isWhitespace(char c)



文章来源: How to read whitespace with scanner.next()