这是读取文件“ 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());
}
}
这是您的正则表达式的问题。当前,您的Scanner
使用每个单独的数字(而不是字母)作为分隔符,因此空白行不是来自您的扫描仪,而是来自System.out.println
,因为sc.next()
正在返回空白令牌。
要解决此问题,只需在正则表达式的末尾添加一个+,使其看起来像这样:[^A-Za-z]+
将常见的匹配字符分组为单个匹配项,以用作分隔符。
在此处阅读有关加号的更多信息:https://www.regular-expressions.info/repeat.html