2016-08-31 2 views
-1

У меня есть простой URL и где-то у меня есть идентификатор, который я хочу получить. Это id находится внутри этого string:Получите идентификатор от URL-адреса

...&userId=123&... 

Так что я хочу, чтобы получить номер 123.

Это то, что я пробовал:

val url = "......" 
val value = array.find(x => x.startsWith("userId=")) 
val id = value.get.replace("userId=", "") 

Любые другие предложения или это лучший подход?

+0

[codereview.se] может быть лучше, чтобы отправить вопрос, если код работает отлично –

+0

Используйте простой регулярное выражение подход: [ '= идентификатор пользователя ([^ & ] +) '] (https://regex101.com/r/wY9qK8/1) – Jan

+0

Не сворачивайте свой собственный парсер URL-адресов, а используйте какой-то пакет. Например, http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/utils/URLEncodedUtils.html –

ответ

1

Я не Скала, но то, что вы пытаетесь сделать, для меня не имеет смысла. Поэтому, если вам нравится делать это с RegExes, это будет вашим выбором. Хороший выбор на самом деле:

Live demo

import scala.util.matching.Regex 

object Main extends App { 
    val url = "https://example.com/?foo=bar&userId=4523&foo=baz" 
    val pattern = new Regex("userId=(\\d+)") 
    pattern.findFirstMatchIn(url) match { 
     case Some(m) => println(m.group(1)) 
    } 
} 
+0

Идентификатор может быть буквенно-цифровым, лучше использовать 'userId = ([^ &] +) ' – Jan

+0

Если он численный (как показывает OP), то он не будет содержать алфавитов. – revo

+0

И если бы идентификатор был только у последнего? –

Смежные вопросы