Как вытащить id видео ссылки YouTube?

211
09 января 2020, 02:50

Как ссылки, например https://youtu.be/KYukvjnHxo и https://youtube.com/watch?v=KYukvjnHxo вытащить id видео и поместить его в переменную String?

Answer 1

Если просто парсить строку без явных регулярок:

List<String> urls = Arrays.asList("https://youtu.be/KYukvjnHxo", "https://youtube.com/watch?v=KYukvjnHxo");
for (String url : urls) {
    String videoId = null;
    if (url.contains("://youtu.be/")) {
        videoId = url.split(".be/")[1];
    } else if (url.contains("://youtube.com/watch?")) {
        videoId = url.split("\\?v=")[1];
    }
    System.out.println(videoId);
}

Если с регулярками, то можно так:

Pattern pattern = Pattern.compile("https?://youtu\\.be/(\\w+)|https?://youtube\\.com/watch\\?v=(\\w+)");
for (String url : urls) {
    String videoId = null;
    Matcher m = pattern.matcher(url);
    if (m.find()) {
        videoId = m.group(1);
        if (videoId == null) {
            videoId = m.group(2);
        }
    }
    System.out.println(videoId);
}

Результат:

KYukvjnHxo
KYukvjnHxo
READ ALSO
Как из .java сделать .class?

Как из .java сделать .class?

Я декомпилировал плагин в одной игре, изменил в нем пару слов и он стал форматаjava, как мне его скомпилировать обратно в формат

216
Java, InstelliJ и ошибка Error:(24, 39) java: illegal start of expression

Java, InstelliJ и ошибка Error:(24, 39) java: illegal start of expression

Помогите избавиться от ошибкиВот код:

202
JTextField, Swing

JTextField, Swing

Пишу игру "Балда"Планирую создать 5х5, каждая ячейка - это отдельный JTextField

272
переопределение toString

переопределение toString

В целом знаю как делать переопределение toString, но возникла ситуация посложнее, помогите разобраться плиз

176