[省略整数时,分隔符会提供多余的空间

问题描述 投票:0回答:1

这是读取文件“ input.txt”的代码,仅使用大写和小写字母。它使用定界符省略所有数字。 “ input.txt”文件具有以下信息:

tree
Harry167
FEE00LING 
blo73b
worry
45hapPY2

我希望输出为

tree
Harry
FEELING 
blob
worry
hapPY

但是我得到

tree

Harry




FEE

LING 

blo

b

worry



hapPY

import java.io.*;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class HuffTree
{
    public static void main(String[] args) throws FileNotFoundException
    {
        File file = new File("input.txt");
        Scanner sc = new Scanner(file);

        sc.useDelimiter("[^A-Za-z]");
        while(sc.hasNextLine())
        System.out.println(sc.next());
    }
}
java file java.util.scanner delimiter
1个回答
1
投票

这是您的正则表达式的问题。当前,您的Scanner使用每个单独的数字(而不是字母)作为分隔符,因此空白行不是来自您的扫描仪,而是来自System.out.println,因为sc.next()正在返回空白令牌。

要解决此问题,只需在正则表达式的末尾添加一个+,使其看起来像这样:[^A-Za-z]+

将常见的匹配字符分组为单个匹配项,以用作分隔符。

在此处阅读有关加号的更多信息:https://www.regular-expressions.info/repeat.html

© www.soinside.com 2019 - 2024. All rights reserved.