我的文件(rates.txt)包含:Abc defghijk lmn opqr st uvwxyza bc 19
在Java从文件中提取数值
我只想提取该文件的19
并将其存储为一个整数。
我该如何解决这个问题?
我试过使用子字符串,但我不确定要使用哪种方法才能使其仅选择数值。
谢谢
我的文件(rates.txt)包含:Abc defghijk lmn opqr st uvwxyza bc 19
在Java从文件中提取数值
我只想提取该文件的19
并将其存储为一个整数。
我该如何解决这个问题?
我试过使用子字符串,但我不确定要使用哪种方法才能使其仅选择数值。
谢谢
如果使用正则表达式会怎么样。 试试这个(我假设你只有一个整数值):
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Tester {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("\\D*(\\d+)\\D*");
Matcher matcher = pattern.matcher("Abc defghijk lmn opqr st uvwxyza bc 19");
try {
if (matcher.find()) {
String stringDigit = matcher.group(1);
int number = Integer.parseInt(stringDigit);
System.out.println(number);
}
} catch(Exception e) {
}
}
}
模式 “\ d *(\ d +)\ d *”,其实就是:
\ d *:多个非数字字符(包括零量字符)
\ d +:多个数字字符
所以,我们正在寻找由一些非数字字符括起来的一些数字字符。
Pattern.compile("\\D*(\\d+)\\D*");
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String text = "xAbc defghijk lmn opqr st uvwxyza bc 19";
Pattern pattern = Pattern.compile("([0-9]+)");
Matcher matcher = pattern.matcher(text);
if(matcher.find()) {
int number = Integer.valueOf(matcher.group(1));
System.out.println("First number: "+number);
}
else {
System.out.println("Not found");
}
}
}
仅有代码的答案不如包含解释代码正在做什么的代码有用。 “教一个人钓鱼”等等。 – 2014-10-16 19:41:39
不错的正则表达式教程 - http://tutorials.jenkov.com/java-regex/matcher.html – Matzz 2014-10-16 19:50:05
字符串str =“”;
List < String> splitElements = Arrays.asList(str.split(“\ s +”));
然后,遍历列表中的每个元素,创建一个helperMethod来验证元素是否为数字是个好主意。这可能与一些来实现这样的:
公共静态布尔ISNUMERIC(串串){
尝试
{
INT intString =的Integer.parseInt(串);
}
catch(NumberFormatException ex)
{
return false;
}
return true;
}
制作通知,它解析只是INT数字,创造更多的辅助方法,就大功告成了,希望它帮助!
向我们显示您的代码。 – m0skit0 2014-10-16 19:33:01
你的答案也将取决于你的数据的一致性。数字数据总是会在最后?总是会有一个数字标记,而其他所有标记都是alpha?询问头脑想知道。 – MarsAtomic 2014-10-16 19:36:46
这只是一个单一的数据,我想要做的就是导入数据并取出数字19,然后我可以在程序中使用它。 – ChatNoir 2014-10-16 19:41:47