截取url中的参数(支持截取一个或全部)

本文介绍了一种通过JavaScript从URL中提取参数的方法,并提供了完整的代码实现。该方法支持获取单个或全部参数,返回值为JSON格式,适用于网页应用中动态处理URL需求。

##截取url中的参数(支持以截取一个或全部)
####代码:
getParamByUrl: function(url, par) {
console.log(url);
var fileUrl = ‘’; //文件地址
var listParam = ‘’; //参数集合
var listParamObj = {}; //
var listParamArr = ‘’; //包含所有参数
//去掉hash
url = url.split(’#’)[0];
//获取文件地址
fileUrl = url.split(’?’)[0];
listParam = url.split(’?’);
if (listParam.length > 1) {
listParam.shift();
var listParam2 = listParam.join();
listParamArr = listParam2.split(’&’);
listParamArr.forEach(function(ele) {
var temp = ele.split(’=’);
listParamObj[temp[0]] = temp[1];
});
} else {
console.log(‘没有参数’);
}
if (par == ‘allparam’) {
//返回全部参数
return listParamObj;
} else {
//返回指定参数
for (const key in listParamObj) {
if (key == par) {
return JSON.parse(’{’ + ‘"’ + par + ‘"’ + ‘:’ + ‘"’ + listParamObj[par] + ‘"’ + ‘}’);
} else {
console.log(‘没有传入的参数’);
}
}
}
},

###调用:
alert(JSON.stringify(that.getParamByUrl(url, ‘allparam’)));

其中:url表示被截取的URL地址,第二个参数表示需要获取的参数的key,传入allparam则表示获取全部参数。返回值是json格式。

新博客地址:http://www.caomage.com

### 如何从URL截取指定参数的值 在JavaScript中,可以通过多种方法来实现从URL中提取特定参数的值。以下是几种常见的解决方案: #### 方法一:通过正则表达式匹配 可以定义一个函数 `mygetURLQuery` 来利用正则表达式提取目标参数的值[^2]。 ```javascript function mygetURLQuery(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var hash = window.location.href.split("?")[1]; var r = hash ? hash.match(reg) : null; if (r !== null) { return decodeURI(r[2]); } return null; } ``` 调用此函数时传入参数名称即可返回对应的值。例如,如果当前页面的URL为 `http://example.com/page?id=12345&image=test.jpg`,那么执行以下代码会得到相应结果: - 调用 `mygetURLQuery("id")` 将返回 `"12345"`。 - 调用 `mygetURLQuery("image")` 将返回 `"test.jpg"`。 #### 方法二:解析整个查询字符串并查找键值对 另一种方式是先将所有的查询参数转换成对象形式存储起来再从中读取所需数据[^1]。 ```javascript function GetRequest(urlStr) { let url; if (typeof urlStr === "undefined") { url = decodeURI(location.search); } else { url = "?" + urlStr.split("?")[1]; } const theRequest = {}; if (url.indexOf("?") !== -1) { const str = url.substr(1); const strs = str.split("&"); for (let i = 0; i < strs.length; i++) { const pair = strs[i].split("="); theRequest[pair[0]] = decodeURI(pair[1]); } } return theRequest; } // 使用示例 const params = GetRequest(); console.log(params.id); // 输出 '12345' console.log(params.image); // 输出 'test.jpg' ``` 这种方法适用于需要频繁访问多个不同参数的情况,因为它一次性构建了一个包含所有参数及其对应值得字典结构。 #### Java 实现方案 对于Java开发者来说也可以编写类似的逻辑去处理这个问题[^3]^, ^[^4]: ```java public class URLUtils { /** * 获取指定url中的某个参数. * * @param url 待分析的完整路径地址 * @param name 参数的名字 * @return 如果存在就返回该参数的具体数值;否则返回null */ public static String getParamByUrl(String url, String name) { url += "&"; String pattern = "(\\?|&)#{0,1}" + Pattern.quote(name) + "=[a-zA-Z0-9]*(&{1})"; Pattern regexPattern = Pattern.compile(pattern); Matcher matcherResult = regexPattern.matcher(url); if(matcherResult.find()){ return matcherResult.group().split("=")[1].replaceAll("&", ""); }else{ return null; } } } ``` 者采用更现代的方式借助 Apache Commons 库完成相同功能[^4]: ```java import org.apache.http.client.utils.URLEncodedUtils; import java.net.URI; import java.util.List; private String getIsNghValue(String url){ try{ List<org.apache.http.NameValuePair> args = URLEncodedUtils.parse(new URI(url),"UTF-8"); for(org.apache.http.NameValuePair arg :args ){ if(arg.getName().equals("isNgh")){ return arg.getValue(); } } }catch(Exception ex){} return ""; } ``` 以上就是在不同编程环境下如何有效地获取URL里边具体某一项参数的办法介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值