从字符串Java中提取特定的整数序列

时间:2016-03-12 12:35:10

标签: java regex string

我想从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

2 个答案:

答案 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());
    }
}