我有一个名为MyText.txt的外部文本文件。我正在java中读取该文件并尝试仅提取浮点值。文本文件中的值和句子可能会有所不同。这就是我到目前为止所做的:
MyFile.txt内容:
Harry have 21.00pounds. 11/25/2009 is my birthday.
我的代码是
for(int K = 1; K < myTextWords.length; K++){
String s = myTextWords[K];
try{
float f = Float.valueOf(s.trim()).floatValue();
System.out.println("float f = " + f);
}
catch (NumberFormatException nfe){
System.err.println("NumberFormatException: " + nfe.getMessage());
}
}
问题是:
21.00打印为
float f = 21.0
11/25/2009也转换为字符串并打印为
float f = 11.0
float f = 25.0
float f = 2009.0
如何限制程序只提取和转换类似21.00,190.20的字符串。
**文本值的内容可能会有所不同,而不是固定的。
答案 0 :(得分:1)
检查所有正则表达式
String decimalPattern = "([0-9]*)\\.([0-9]*)";
String number="20.00";
boolean match = Pattern.matches(decimalPattern, number);
if(match){
try{
float f = Float.valueOf(number.trim()).floatValue();
System.out.println("float f = " + f);
}
catch (NumberFormatException nfe){
System.err.println("NumberFormatException: " + nfe.getMessage());
}
}
答案 1 :(得分:0)
使用Scanner类方法的方法(需要空格);
String str = "Harry have 21.00 pounds. 11/25/2009 is my birthday."; Scanner scnr = new Scanner(str); while(scnr.hasNext()) { if(scnr.hasNextFloat()) { System.out.println(scnr.nextFloat()); // show it }else{ scnr.next(); // skip } }