写在前面

在项目中经常用到解析url中参数的逻辑,今天先下载就自己封装了一个方法,方便以后使用的时候,信手拈来。当然这里给出的方法是针对常见的url参数类型的,对于重写url,或者路由格式的不考虑。

c#方法

        /// <summary>
/// 获取url中参数
/// </summary>
/// <param name="url">要解析的url</param>
/// <param name="baseUrl">基地址</param>
/// <returns>参数键值对</returns>
public static NameValueCollection GetUrlParamters(string url, out string baseUrl)
{
if (string.IsNullOrEmpty(url))
{
throw new ArgumentNullException("url");
}
NameValueCollection nameValueCollection = new NameValueCollection();
if (url.IndexOf('?') == -)
{
baseUrl = url;
return nameValueCollection;
}
string[] strUrlParts = url.Split('?');
baseUrl = strUrlParts[];
Regex regex = new Regex(@"(^|&)?(?<key>\w+)=(?<value>[^&]+)(&|$)?", RegexOptions.Compiled);
MatchCollection matches = regex.Matches(url);
foreach (Match item in matches)
{
if (item.Success)
{
nameValueCollection.Add(item.Groups["key"].Value, item.Groups["value"].Value);
}
}
return nameValueCollection;
}

测试

        static void Main(string[] args)
{
string url = "https://www.baidu.com?p=23432&w=sss&s=kkkdfd";
string baseUrl = string.Empty;
NameValueCollection parameters = GetUrlParamters(url, out baseUrl);
Console.WriteLine(baseUrl);
foreach (var item in parameters.Keys)
{
Console.WriteLine(item + "=" + parameters[item.ToString()].ToString());
}
Console.Read();
}

js方法

    <script>
var getParameters = function (url) {
var nameValues = [];
if (url) {
if (url.indexOf('?') == -1) {
return nameValues.push({ baseUrl: url });
};
var arrUrlParts = url.split('?');
var baseUrl = arrUrlParts[0];
console.log(arrUrlParts[1]);
var urlParameters=arrUrlParts[1].split('&');
for (var i = 0; i < urlParameters.length; i++) {
console.log(urlParameters[i]);
var nameValue = urlParameters[i].split('=');
nameValues.push({ baseUrl: baseUrl, key: nameValue[0], value: nameValue[1]});
};
return nameValues;
};
};
console.log(getParameters('https://www.baidu.com?p=23432&w=sss&s=kkkdfd'));

测试

总结

这里将常用的方法封装一下,方便以后使用。

[工具类]获取url中参数列表的更多相关文章

  1. vue不通过路由直接获取url中参数的方法示例

    vue不通过路由直接获取url中参数的方法示例 vuejs取得URL中参数的值地址:http://localhost:3333/#/index?id=128console.log(this.$rout ...

  2. js获取url中参数名也参数值

    要撮利用js获取url中参数名也参数值这个不多见了,但我今天需要这样操作,下面我来给大家介绍一下具体的实例方法.   在已知参数名的情况下,获取参数值,使用正则表达式能很容易做到. js的实现方法如下 ...

  3. js获取url中参数

      /** * 获取地址栏参数值 * @param name 参数名 * @returns */ $(function () { var url = location.search; //获取url中 ...

  4. 通过正则表达式获取url中参数

    url: http://xxxx.com?name=魅力&id=123 js中: var name = getUrlParam("name"); /*通过正则获取url中的 ...

  5. C#获取url中参数键值对的方法

    方法如下: /// <summary> /// 遍历Url中的参数列表 /// </summary> /// <returns>如:(?userName=keley ...

  6. js的url中传递中文参数乱码,如何获取url中参数问题

    一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码: <script type=”text/javascript ...

  7. JS中的的Url传递中文参数乱码,如何获取Url中参数问题

    一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码:<script type=”text/javascript” ...

  8. js 获取URL中参数

    function getQueryString() { var result = location.search.match(new RegExp("[\?\&][^\?\& ...

  9. JavaScript根据参数获取url中参数名的值

    //假设ulr如下var localhost="http://127.0.0.1?name=tom&sex=男&id=1";//正则方法封装function Get ...

随机推荐

  1. Loj 1003–Drunk(拓扑排序)

    1003 - Drunk PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB One of my fr ...

  2. oracle11G在linux环境下的卸载操作

    1.使用SQL*PLUS停止数据库[oracle@OracleTest oracle]$ sqlplus logSQL> connect / as sysdbaSQL> shutdown ...

  3. 由fdopen和fopen想到的

    ISO C并没有规定fdopen,而是POSIX的补充. FILE *fopen(const char *path, const char *mode); FILE *fdopen(int fd, c ...

  4. WCF并发控制与实例模式

    WCF实例模式类型与区别 实例化模式 instanceMode percall        单调模式 [ServiceBehavior(InstanceContextMode=InstanceCon ...

  5. Oracle查询字符集

    select * from nls_database_parameters 备忘一下.

  6. Golang 实现简单的滚动读取文本更新

    这个小程序要实现的效果,简单地说,就是将目标文件的内容读取输出到终端,并且目标文件并不是静态的,而是随时会添加新的内容.我们的目标就是一旦目标文件添加了新的内容,就把它读取出来并且显示到终端上. 实现 ...

  7. 【Android 我的博客APP】1.抓取博客首页文章列表内容——网页数据抓取

    打算做个自己在博客园的博客APP,首先要能访问首页获取数据获取首页的文章列表,第一步抓取博客首页文章列表内容的功能已实现,在小米2S上的效果图如下: 思路是:通过编写的工具类访问网页,获取页面源代码, ...

  8. java 14 -1 正则表达式

    正则表达式:符合一定规则的字符串. 1.判断QQ号码是否正确的案例: public class RegexDemo2 { public static void main(String[] args) ...

  9. 大话redis/memcache缓存

    通常情况下,随着业务量增加,对后端数据库的访问压力也会随之加大.当数据库访问压力渐渐增大时,除了升级数据库配置提高数据库本身的抗压能力外,我们也可以采用在应用服务器与数据库服务器之间架设数据库缓存服务 ...

  10. Java 操作 Redis 高级

    /Users/sherry/WorkPath/Git/Web/redisDemo/src/main/java/org/zln/utils/JedisUtils.java package org.zln ...