很直覺得寫下來,先切?再切&
void getURLvalue(string url){
if (url.indexOf("?") != -1) {
temp = url.split("?")[1]; //這行有錯
tempArray = temp.split("&");
for (String i : tempArray) {
String[] pair = i.split("=");
if (pair[0] == "id") // pair[0] = key ; pair[1] = value
...
}
}
}
但compile說第二行?有錯
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0
?
^
原來問題出現在
temp = url.split("?")[1];------->temp = url.split("//|?")[2];
就可以順利執行了
結果不保證每次都是想要的。另外找尋其他方法。
修改後的版本
void getURLvalue(string url){
URL tempUrl = new URI(url).toURL();
String[] queryArray = tempUrl.getQuery().split("&");
for (String i : queryArray) {
String[] pair = i.split("=");
if (pair[0].equals("v")) { // pair[0] = key ; pair[1] = value
}
}
}
其中須注意的地方,字串比對要用.equals。
其他功能
System.out.println("getAuthority:" + url.getAuthority());System.out.println("getDefaultPort:" + url.getDefaultPort());
System.out.println("getFile:" + url.getFile());
System.out.println("getHost:" + url.getHost());
System.out.println("getPath:" + url.getPath());
System.out.println("getPort:" + url.getPort());
System.out.println("getProtocol:" + url.getProtocol());
System.out.println("getQuery:" + url.getQuery());
System.out.println("getRef:" + url.getRef());
System.out.println("getUserInfo:" + url.getUserInfo());
沒有留言:
張貼留言