需要从文件名字符串中提取整数

时间:2012-03-22 01:23:10

标签: java regex

我有几个像这样的png图像文件 -

  • house_number_5.png
  • house_number_512.png
  • house_number_52352.png

在上面的例子中,我需要从这些文件名中提取整数... 5,12,2352。有谁知道怎么做?

5 个答案:

答案 0 :(得分:2)

只需复制并粘贴即可。这是一个真正有效的版本。 (并抱歉以前的版本不起作用)

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest {

    public static void main(String[] args){
        Pattern p = Pattern.compile("house_(\\d+)\\.png");
        Matcher m = p.matcher("house_234.png");

        if (m.find()) {
            System.out.println(m.group(1)); //print the number
        }
    }
}

结果

234

答案 1 :(得分:0)

如果你想在没有正则表达式的情况下这样做:

/* assume valid input */

public int getNumber(String filePath)
{
    int startPos = filePath.lastIndexOf("_");
    int dotPos = filePath.indexOf(".", lastUnderscorePos);
    String numberString = filePath.substring(startPos + 1, dotPos);
    return Integer.parseInt(numberString);
}

答案 2 :(得分:0)

Pattern intsOnly = Pattern.compile("\\d+");
Matcher makeMatch = intsOnly.matcher("house_number_5.png");
makeMatch.find();
String inputInt = makeMatch.group();
System.out.println(inputInt);

答案 3 :(得分:0)

  1. 获取文件名
  2. 使用子串(...)方法删除.png。
  3. 使用Stringtokenizer,使用下划线'_'作为拆分类型的split(..)方法。
  4. StringTokenizer的第三个标记是数字,使用parseInt将其转换为整数。

答案 4 :(得分:0)

使用正则表达式替换所有作品:

 "house_number_52352.png".replaceAll (".*[^0-9]([0-9]+)\\.png", "$1") 
  • 。* [^ 0-9]取一长串字符,以非数字结尾......
  • 后跟至少一位数
  • 和一个文字点
  • 和文字png

将整个事物替换为(至少一位数)。