Необходимо извлечь целое число из строки имени файла - PullRequest
2 голосов
/ 22 марта 2012

У меня есть несколько файлов изображений png с такими именами -

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

Мне нужно извлечь целые числа из этих имен файлов ... 5, 12, 2352 в случае выше.Кто-нибудь знает, как это сделать?

Ответы [ 5 ]

2 голосов
/ 22 марта 2012

просто скопируйте и вставьте.это действительно рабочая версия.(и простите за предыдущую версию, которая не работает)

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
0 голосов
/ 23 марта 2012

Заменить-все работает с регулярными выражениями:

 "house_number_52352.png".replaceAll (".*[^0-9]([0-9]+)\\.png", "$1") 
  • . * [^ 0-9] взять длинную цепочку символов, которая заканчивается не цифрой ...
  • , за которым следует хотя бы одна цифра
  • и буквальная точка
  • и буквальный png

Заменить все это группой (хотя бы одна цифра).

0 голосов
/ 22 марта 2012
  1. Получите имя файла
  2. Удалите .png, используя метод substring (..).
  3. Используйте Stringtokenizer, используйте метод split (..), используя подчеркивание '_' в качестветип split.
  4. Третьим токеном из StringTokenizer будет число, преобразуйте его в целое число, используя parseInt.
0 голосов
/ 22 марта 2012
Pattern intsOnly = Pattern.compile("\\d+");
Matcher makeMatch = intsOnly.matcher("house_number_5.png");
makeMatch.find();
String inputInt = makeMatch.group();
System.out.println(inputInt);
0 голосов
/ 22 марта 2012

Если вы хотите сделать это без регулярных выражений:

/* 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...