当省略整数时,定界符会提供多余的空间

这是读取文件“ 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());
    }
}
d228489 回答:当省略整数时,定界符会提供多余的空间

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

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

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

在此处详细了解加号: https://www.regular-expressions.info/repeat.html

本文链接:https://www.f2er.com/3043937.html

大家都在问