假設我有一個網址,如:從URL中提取領域斯卡拉-JS
https://example.com/myproject/index-dev.html?_ijt=hsdlgh8h5g8hh489sajoej&a=102&b=a%20m&c=45&d=all&e=all
,或者它可能是在本地主機上像一個網頁:
localhost:63342/my project/index-dev.html?_ijt=hsdlgh8h5g8hh489sajoej&a=102&b=a%20m&c=45&d=all&e=all
,我已經提取查詢字段從2-d陣列這些URL(後出現「?」)如下:
_ijt | hsdlgh8h5g8hh489sajoej
a | 102
b | a m
c | 45
d | all
e | all
請大家注意,在「b」領域,我把它換成「%20」無線一個空間。這些字段如_ijt,a,b,c,d,e等可以在數量和名稱上有所不同,例如'a'可以是'城市'。 到目前爲止,我已經使用正則表達式來提取'?'後的部分然後使用split(「&」)方法將字符串拆分爲多個字符串。 碼 -
val url=localhost:63342/my project/index-dev.html?_ijt=hsdlgh8h5g8hh489sajoej&a=102&b=a%20m&c=45&d=all&e=all
val pattern="""(http|htpps)([A-Za-z0-9\:\/\%\-\.]*)\?""".r
val temp_url=pattern.replaceFirstIn(url,"")
val fields=temp_url.split("&")
println(fields.foreach(println))
,輸出是:
_ijt=hsdlgh8h5g8hh489sajoej
a=102
b=a%20m
c=45
d=all
e=all
但它似乎並沒有被這樣做的正確方法。任何幫助?
它解決了問題「一%20米」,但在URL的末尾想,我加上'#clinic'然後它會顯示'引擎=所有#clinic'這是不可取的。此外,我必須使用'fields.foreach(println)'來打印這些字段。但我想將每個字段存儲到一個單獨的變量中。我怎樣才能做到這一點? – Ishan
使用'java.net.URI'來可靠地解析這樣的URL。它由Scala.js支持(雖然不是'java.net.URL')。 – sjrd