【发布时间】:2016-04-02 03:59:18
【问题描述】:
到目前为止,我有这段代码,但我在使用分隔符时遇到了问题(我是正则表达式和文件读取的新手)。
File file = new File(ROOT_FOLDER + fname);
Scanner scanner = null;
try {
Pattern p = Pattern.compile("(?=\\D+)(?=[^\\.])");
scanner = new Scanner(file).useDelimiter(p);
while (scanner.hasNext()) {
String next = scanner.next();
UI.println(next);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
throw new Error(e);
} finally {
if (scanner != null)
scanner.close();
}
文件示例
Samples from database of fake names from http://www.fakenamegenerator.com/
All details are fictious!!
Mr. Jake M Goodwin 11 Yarmouth Road Mahora 4120 JakeGoodwin@teleworm.us (022) 6735-347 1998 Rolls-Royce Silver Spur 100.9 184
Mr. Samuel D Law 140 Small Street Dunedin Central 9016 SamuelLaw@cuvox.de (028) 0699-710 2001 Dodge Durango 113 180
让我感到困惑的是,如果我使用默认的空格分隔符,那么像 (028) 这样的数字将不会被检测为带有 hasNextDouble() 的数字(但我认为使用正则表达式意味着我可以只使用 hasNext()无论如何)。
我需要使用什么合适的分隔符?我正在考虑类似的事情:任意数量的非数字连续,只要它不是一个点。
【问题讨论】:
-
你能给你的程序提供一个示例输入和输出吗?
-
。在一堆空格中偶尔出现的数字或单点,或点后跟数字。
标签: java regex java.util.scanner