Как проверить, есть ли в URL-адресе YouTube имя пользователя или канал? - PullRequest
0 голосов
/ 18 марта 2020

Я хочу проверить, URL-адрес YouTube - это имя пользователя или номер канала? например https://www.youtube.com/user/aaaaaaaa https://www.youtube.com/channel/UC--------hdch. как проверить?

Ответы [ 2 ]

2 голосов
/ 18 марта 2020

Вы можете проверить, содержит ли URL строку user для пользователя и channel для канала.

String url = "https://www.youtube.com/user/aaaaaaaa"

if(url.contains("/channel/")){
   //url is a channel url 
}else if(url.contains("/user/")){
   //url is a user url
}
1 голос
/ 18 марта 2020

Ну, проблема в том, что вы должны проверить, что есть ссылка на пользователя или канал сразу после адреса YouTube,

val url: String = "https://www.youtube.com/user/aaaaaaaa"

if(url.contains("/channel/")){
   //url is a channel url 
}else if(url.contains("/user/")){
   //url is a user url
}

Здесь я не использовал, чтобы проверить, содержит ли строка youtube.com/user/ потому что некоторые URL могут иметь youtu.be/user/, который является действительным и официальным адресом, поэтому просто проверяя, есть ли впереди sla sh до и после идентификатора, он проверяет, что он будет работать как положено!

РЕДАКТИРОВАТЬ1:

ОП хочет решение регулярного выражения так:

val regex = Regex("""(?:youtube\.com|youtu\.be)\/(user|channel)""")
val result = regex.find("https://www.youtube.com/user/aaaaaaaa")
when(result!!.groupValues[1]){
    "user" -> //code
    "channel" -> //code
    else -> {} //or replace {} with code
} 

РЕДАКТИРОВАНИЕ2:

Вы можете использовать это выражение для получить информацию о URL

val regex = Regex("""(?:https:\/\/)*(?:www\.)*(youtube\.com|youtu\.be)\/(user|channel)\/(\w+)""")
val result = regex.find("https://www.youtube.com/user/aaaaaaaa")!!
when(result.groupValues[2]){
    "user" -> //code
    "channel" -> //code
    else -> {} //or replace {} with code
}

println(result.groupValues[0]) //https://www.youtube.com/user/aaaaaaaa
println(result.groupValues[1]) //youtube.com
println(result.groupValues[2]) //user
println(result.groupValues[3]) //aaaaaaaa

EDIT3: Как указало OP, это не работает для символа (не словесного литерала), следовательно, вместо /w+ вы можете использовать .+

Таким образом, окончательное регулярное выражение будет

(?:https:\/\/)*(?:www\.)*(youtube\.com|youtu\.be)\/(user|channel)\/(.+)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...