截取url中的参数值小结

函数代码:

function getParam(oname,url11){
url11 = decodeURIComponent(url11); //进行解码
if (url11.indexOf("?") != -1) 
{
var str11 = url11.substr(1);             //获取?号后面部分的值
var strs11 = str11.split("&");            //依照&分割成字符串数组     
for (var i = 0; i < strs11.length; i++) 
{
if(strs11[i].split("=")[0]==oname)   //循环遍历找到=号左边的与oname相同的参数
{
return strs11[i].split("=")[1];           //获取参数值
}
}
}
return "";
}

功能:从指定的参数列表(url11:指的是url中从?开始的部分)获取指定名称(oname)的参数值

var resultValue = getParam(oname,url11);

获取到oname所对应的参数值如果直接是值的话就可以直接使用,有一种情况是获得的这个值中还包含多个参数值例如:

resultValue  = "{"a":"324","b":"987"}";   //此时其实是一个JSON字符串

这时如果想获取b的参数值需要用到eval()函数声明成对象(JSON对象)

resultValue   =  eval('('+resultValue  +')');

最后获取b参数的值

var b = resultValue["b"];

所用到的方法:

window.location.search : 从当前URL的?号开始的字符串 。

substr():

定义和用法

可在字符串中抽取从start下标开始的指定数目的字符

stringObject.substr(start,length)
start 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
length 可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。

返回值:一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。

split():

定义和用法

split() 方法用于把一个字符串分割成字符串数组。

语法
stringObject.split(separator,howmany)
参数 描述
separator 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
返回值:一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 stringObject 分割成子串创建的。返回的数组中的字串不包括 separator 自身。

但是,如果 separator 是包含子表达式的正则表达式,那么返回的数组中包括与这些子表达式匹配的字串(但不包括与整个正则表达式匹配的文本)。

indexOf() :

定义和用法
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
语法
stringObject.indexOf(searchvalue,fromindex)
参数 描述
searchvalue 必需。规定需检索的字符串值。
fromindex 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。
说明
该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。
提示和注释
注释:indexOf() 方法对大小写敏感!
注释:如果要检索的字符串值没有出现,则该方法返回 -1。
### 如何从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、付费专栏及课程。

余额充值