我有一個包含URL的字符串。我只想從中得到一個數據:一個int,應該顯示在查詢字符串中。從Java中的URL中去除int的最簡單方法是什麼?
因此,如果網址是:
http://domain.tld/page.html?iVar=123
我想要得到 「123」 爲一個int。
你知道這樣做最優雅的方式是什麼?
我有一個包含URL的字符串。我只想從中得到一個數據:一個int,應該顯示在查詢字符串中。從Java中的URL中去除int的最簡單方法是什麼?
因此,如果網址是:
http://domain.tld/page.html?iVar=123
我想要得到 「123」 爲一個int。
你知道這樣做最優雅的方式是什麼?
你可以嘗試在URL字符串只是參數匹配:
public static Integer getIVarParamValue(String urlStr) {
Pattern p = Pattern.compile("iVar=(\\d+)");
Matcher m = p.matcher(urlStr);
if (m.find()) {
return Integer.parseInt(m.group(1));
}
return null;
}
優秀!更通用一點: – Iraklis 2013-01-30 17:59:00
看來你想獲得參數並解析它們。我這裏有這個方法(有它從什麼地方上的話,我猜):
public static Map<String, List<String>> getQueryParams(String url) {
try {
Map<String, List<String>> params = new HashMap<String, List<String>>();
String[] urlParts = url.split("\\?");
if (urlParts.length > 1) {
String query = urlParts[1];
for (String param : query.split("&")) {
String[] pair = param.split("=");
String key = URLDecoder.decode(pair[0], "UTF-8");
String value = "";
if (pair.length > 1) {
value = URLDecoder.decode(pair[1], "UTF-8");
}
List<String> values = params.get(key);
if (values == null) {
values = new ArrayList<String>();
params.put(key, values);
}
values.add(value);
}
}
return params;
} catch (UnsupportedEncodingException ex) {
throw new AssertionError(ex);
}
}
所以:
String var = WebUtils.getQueryParams(url).get("iVar");
int intVar = Integer.parseInt(var);
如果該URL的查詢字符串部分始終是相同的(所以如果它是總是iVar
)你可以使用urlAsString.indexOf("iVar=")
找到iVar=
,然後知道數字是在那之後,提取數字。這當然不是最脆弱的方法。
但是,如果你正在尋找所有的查詢字符串,那麼Bozho的答案要好得多。
如果它真的和你描述的一樣簡單:你的URL只有一個int,你想要的只是int,我會去尋找一個正則表達式。如果實際上更復雜,請參閱其他答案。
Pattern p = Pattern.compile("[0-9]+");
Matcher m = p.matcher("http://domain.tld/page.html?iVar=123");
if (m.find())
System.out.println(m.group());
可以使用URL類。 即:
URL myUrl = new URL("http://domain.tld/page.html?iVar=123");
String query = myUrl.getQuery(); //this will return iVar=123
//at this point you can either parse it manually (i.e. use some of the regexp in the other suggestions, or use something like:
String[] parts = query.split();
String variable = parts[0];
String value = parts[1];
這隻會工作的這種情況下,雖然,如果你有額外的params中,沒有PARAMS將無法正常工作。 有許多解決方案將它分成一個在線參數圖,你可以看到一些here。
這也可以做的工作:
public static int getIntParam(HttpServletRequest request, String name, int defaultValue) {
String value = request.getParameter(name);
try {
if (value != null) {
return Integer.valueOf(value);
}
} catch (NumberFormatException e) {
}
return defaultValue;
}
希望它能幫助!
你想在服務器端嗎?或者你只是想要這個號碼? – 2011-04-19 23:01:53
http://stackoverflow.com/questions/1667278/parsing-query-strings-in-java – Carsten 2011-04-19 23:05:55