Scala pattern matching contre Url
Est-il un Scala bibliothèque/exemple qui va analyser une URL/URI dans une classe de cas de la structure de filtrage?
Vous devez vous connecter pour publier un commentaire.
Est-il un Scala bibliothèque/exemple qui va analyser une URL/URI dans une classe de cas de la structure de filtrage?
Vous devez vous connecter pour publier un commentaire.
Voici un extracteur qui vous permettra d'obtenir certaines parties de l'URL pour vous:
new java.net.URL
est dangereux — voir stackoverflow.com/a/9608008/86485Je suggère d'utiliser la possibilité offerte par extracteurs pour les expressions régulières.
Par exemple:
Quelques explications:
.r
méthode sur des chaînes de caractères (en fait, surStringLike
s) les transforme en une instance deRegex
.Regex
es définir ununapplySeq
méthode, ce qui leur permet d'être utilisés comme les extracteurs dans le pattern matching (notez que vous devez leur donner un nom qui commence par une lettre majuscule pour que cela fonctionne).(...)
dans l'expression régulière.=>
. Tel que défini, il retourneUnit
, mais vous pouvez changer laprintln...
à(protocol, domain, tld)
pour un tuple,Seq(protocol, domain, tld)
si vous voulez une Séquence, ou votre classe de cas si vous définissez une seule.Some people, when confronted with a problem, think “I know, I'll use regular expressions.” Now they have two problems.
Vous pouvez utiliser java URL qui peut analyser une URL pour ses composants différents et est totalement Scala compatible.
La bibliothèque suivantes peuvent vous aider à analyser les Uri dans une instance d'une classe de cas. (Avertissement: il s'agit de ma propre bibliothèque)
https://github.com/theon/scala-uri
Vous analyser comme suit:
Il fournit une connexion DSL pour la construction des Url avec des chaînes de requête:
val uri: Uri = "$%&"
, puis je reçois un étrangeStringIndexOutOfBoundsException