到目前为止我有这个代码,但是我在使用分隔符方面遇到了麻烦(我是regex和文件阅读的新手)。
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()
。
我需要使用的分隔符是什么?我想的是:任意数量的非数字和连续,只要它不是一个点。
答案 0 :(得分:1)
您可以使用:
IsPressed
输入:
来自http://www.fakenamegenerator.com/的虚假名称数据库的样本 所有的细节都是虚构的! Jake M Goodwin 11 Yarmouth Road Mahora 4120 JakeGoodwin@teleworm.us(022)6735-347 1998 Rolls-Royce Silver Spur 100.9 184 Samuel D Law先生140小街达尼丁中央9016 SamuelLaw@cuvox.de(028)0699-710 2001 Dodge Durango 113 180
输出:
11 4120 022 6735 347 1998年 100.9 184 140 9016 028 0699 710 2001年 113 180