2

我有一个文本文件如下:


Title
XYZ
Id name
1  abc
2  pqr
3  xyz

我需要读取以整数值开头的内容,并使用正则表达式,如下面的代码所示。

public static void main(String[] args) throws FileNotFoundException {
   FileInputStream file= new FileInputStream("C:\\Users\\ap\\Downloads\\sample1.txt"); 
   Scanner scanner = new Scanner(file);
          while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            if (line.startsWith("[0-9]")) {
                System.out.println("Line: "+line);
            }
           }
}

上面的代码无法检测到以整数开头的行。但是,如果将单个整数值传递给startsWith()函数,它就可以正常工作。请建议,我哪里出错了。

4

2 回答 2

8

String#startsWith(String)方法不采用正则表达式。它需要一个字符串文字。

要检查第一个字符是否为数字,您可以使用String#charAt(int index)方法获取索引 0 处的字符。然后使用方法测试该字符是否为数字Character#isDigit(char)

if (Character.isDigit(line.charAt(0)) {
    System.out.println(line);
}
于 2013-10-02T16:15:41.640 回答
2

对于正则表达式,您可以使用“匹配”方法,如下所示:

line.matches("^[0-9].*")
于 2013-10-02T16:19:07.473 回答