我想从Java
中的字符串中提取特定的整数序列所以我想从字符串1中提取239
,从字符串2中提取889
。我搜索了但我发现的是使用正则表达式并删除所有非数字。但是我不能在这里使用它,因为我不想"1"
中的"Name1"
import java.io.*;
public class Test1 {
public static void main(String[] args){
BufferedReader br = null;
try{
String s;
br = new BufferedReader(new FileReader("C:/Users/i1234/Desktop/Workspace/Assign4/src/input1.txt"));
while((s = br.readLine()) != null){
s = s.replaceAll("\\D+", "");
System.out.println(s);
}
}catch(IOException e){ //Exceptions handling
e.printStackTrace();
} finally{
try{
if (br != null){
br.close();
}
}catch(IOException ex){
ex.printStackTrace();
}
}
}
}
输入文件是:
Name1 string 239
Name2 is a string 889
Word 432
输出结果为:
1239
2889
432
答案 0 :(得分:1)
如果文件中的所有行都遵循相同的模式,则会执行以下操作。
while((s = br.readLine()) != null){
s = s.split(" ")[s.split(" ").length - 1];
System.out.println(s);
}
答案 1 :(得分:1)
如果在数字之后有什么东西你可以使用正则表达式词边界:
while ((s = br.readLine()) != null) {
Matcher m = Pattern.compile("\\b\\d+\\b").matcher(s);
if (m.find()) {
System.out.println(m.group());
}
}