【问题标题】:Delimiter gives excess space when omitting integers省略整数时,分隔符会提供多余的空间
【发布时间】:2020-03-19 14:28:52
【问题描述】:

这是读取文件“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());
    }
}

【问题讨论】:

  • 要格式化代码,输入和输出在这些行前面加上四个空格,或者选择它们并按 ctrl+k。您也可以使用工具栏按钮{}。如需更多信息,请参阅stackoverflow.com/editing-help

标签: java file java.util.scanner delimiter


【解决方案1】:

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

要解决此问题,只需在正则表达式的末尾添加一个 + 即可使其如下所示: [^A-Za-z]+

这会将常见的匹配字符组合成一个匹配项,用作分隔符。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多