gpt4 book ai didi

Java - 如何读取文件的整数或 double / float

转载 作者:行者123 更新时间:2023-12-01 10:07:07 24 4
gpt4 key购买 nike

到目前为止,我已经有了这段代码,但我在使用分隔符时遇到了问题(我对正则表达式和文件读取都是新手)。

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() 代替)。

我需要使用的正确分隔符是什么?我正在考虑这样的事情:任意数量的非数字并且连续,只要它不是单个点。

最佳答案

你可以使用这个:

try
{
//regex for matching only numbers and dot
Pattern p = Pattern.compile("[^0-9.]");
scanner = new Scanner(new FileReader(FILE_PATH)).useDelimiter(p);
while (scanner.hasNext()) {
String next = scanner.next();
if(!next.equals("") && !next.equals(".")) {
System.out.println(next);
}
}
}
catch(FileNotFoundException e)
{
e.printStackTrace();
}
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

输出:

11 4120 022 6735 347 1998 100.9 184 140 9016 028 0699 710 2001 113 180

关于Java - 如何读取文件的整数或 double / float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36369024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com