захватить последние четыре цифры после удаления не цифр с помощью регулярного выражения - PullRequest
1 голос
/ 27 мая 2020

Я получаю URL-адрес (http://localhost:8080/CompanyServices/api/creators/2173), показанный ниже, из заголовка HTTP-ответа, и я хочу получить id после creators, что равно 2173.

Итак, я удалил все не цифры, как показано ниже, и получил следующий результат: 80802173. Это хороший подход, чтобы получить последние 4 цифры из приведенного выше набора цифр? Я должен просто взять что-нибудь после creators/? Если да, то как лучше всего сообщить об этом go?

public class GetLastFourIDs {


    public static void main(String args[]){  
        String str = "http://localhost:8080/CompanyServices/api/creators/2173";
        String replaceString=str.replaceAll("\\D+","");
        System.out.println(replaceString);  
        } 

}

1 Ответ

1 голос
/ 27 мая 2020

Вы можете использовать API регулярных выражений, например

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

public class Main {
    public static void main(String[] args) {
        String str = "http://localhost:8080/CompanyServices/api/creators/2173";
        Pattern pattern = Pattern.compile("(creators/\\d+)");
        Matcher matcher = pattern.matcher(str);
        int value = 0;
        if (matcher.find()) {
            // Get e.g. `creators/2173` and split it on `/` then parse the second value to int
            value = Integer.parseInt(matcher.group().split("/")[1]);
        }
        System.out.println(value);
    }
}

Вывод:

2173

Решение без регулярных выражений:

public class Main {
    public static void main(String[] args) {
        String str = "http://localhost:8080/CompanyServices/api/creators/2173";
        int index = str.indexOf("creators/");
        int value = 0;
        if (index != -1) {
            value = Integer.parseInt(str.substring(index + "creators/".length()));
        }
        System.out.println(value);
    }
}

Вывод:

2173

[Обновление]

Включая комментарий Андреаса следующим образом:

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

public class Main {
    public static void main(String[] args) {
        String str = "http://localhost:8080/CompanyServices/api/creators/2173";
        Pattern pattern = Pattern.compile("creators/(\\d+)");
        Matcher matcher = pattern.matcher(str);
        int value = 0;
        if (matcher.find()) {
            value = Integer.parseInt(matcher.group(1));
        }
        System.out.println(value);
    }
}

Вывод:

2173
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...