我的文件(rates.txt)包含:Abc defghijk lmn opqr st uvwxyza bc 19
我想从文件中仅提取19
并将其存储为整数。
我该怎么做?
我尝试过使用子字符串但不确定使用什么方法才能使其只选择数值。
由于
答案 0 :(得分:4)
如果使用正则表达式,该怎么办? 试试这个(我假设你只有一个整数值):
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*");
答案 1 :(得分:1)
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");
}
}
}
答案 2 :(得分:0)
String str ="&#34 ;;
列表与LT;串GT; splitElements = Arrays.asList(str.split(" \ s +"));
然后,遍历列表中的每个元素,创建一个帮助验证元素是否为数字的helperMethod是个好主意。可以通过以下方式实现:
public static boolean isNumeric(String string){
尝试
{
int intString = Integer.parseInt(string);
}
catch(NumberFormatException ex)
{
返回false;
}
返回true;
}
请注意它只解析 int 数字,创建更多辅助方法并完成,希望它有所帮助!