[英]Simplest way to strip an int out of a URL in Java?
我有一個包含URL的字符串。 我只想從中獲取一個數據:應該在查詢字符串中顯示的int。
因此,如果網址是:
HTTP://domain.tld/page.html的Ivar = 123
我想將“ 123”轉換為整數。
您知道執行此操作最優雅的方式是什么?
您可以嘗試僅匹配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;
}
這也可以做的工作:
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;
}
希望能幫助到你!
看來您想獲取get參數並對其進行解析。 我在這里有這種方法(我想是從某個地方得到的):
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中只有1個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];
不過,這僅適用於這種情況,如果您有其他參數或沒有參數,則將無法使用。 有許多解決方案可以在線將其拆分為參數映射,您可以在此處看到一些解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.