/// <summary> /// 从指定的 URI 删除所有参数,只保留问号“?”之前的部分或者按照参数选择是否保留页面内部定位标记。 /// </summary> /// <param name="uri">一个可能包含参数的 uri 字符串。</param> /// <returns>已经去除参数的 uri 字符串。</returns> /// <example> /// <para lang="C#"> /// <![CDATA[ /// 下面的代码演示了如何使用这个方法清除 URL“http://www.thinksea.com/default.aspx?id=1&name=thinksea”的参数部分: /// ]]> /// </para> /// <code lang="C#"> /// <![CDATA[this.Response.Write(Thinksea.Web.ClearUriParameter("http://www.thinksea.com/default.aspx?id=1&name=thinksea")); /// ]]> /// </code> /// <para lang="C#"> /// 输出结果: /// <br/>http://www.thinksea.com/default.aspx /// </para> /// </example> public static string ClearUriParameter(string uri) { var r = UriExtTool.Create(uri); r.ClearUriParameter(false); return(r.ToString()); }
/// <summary> /// 从指定的 URI 删除所有参数,只保留问号“?”之前的部分或者按照参数选择是否保留页面内部定位标记。 /// </summary> /// <param name="uri">一个可能包含参数的 uri 字符串。</param> /// <param name="retainSharp">指示是否应保留页面内部标记(井号后的内容)。</param> /// <returns>已经去除参数的 uri 字符串。</returns> /// <example> /// <para lang="C#"> /// <![CDATA[ /// 下面的代码演示了如何使用这个方法清除 URL“http://www.thinksea.com/default.aspx?id=1&name=thinksea”的参数部分: /// ]]> /// </para> /// <code lang="C#"> /// <![CDATA[this.Response.Write(Thinksea.Web.ClearUriParameter("http://www.thinksea.com/default.aspx?id=1&name=thinksea", false)); /// ]]> /// </code> /// <para lang="C#"> /// 输出结果: /// <br/>http://www.thinksea.com/default.aspx /// </para> /// </example> public static string ClearUriParameter(string uri, bool retainSharp) { var r = UriExtTool.Create(uri); r.ClearUriParameter(retainSharp); return(r.ToString()); }
/// <summary> /// 从指定的 URI 删除参数。 /// </summary> /// <param name="uri">一个可能包含参数的 uri 字符串。</param> /// <param name="name">参数名。</param> /// <returns>已经移除了指定参数的 uri 字符串。</returns> /// <example> /// <para lang="C#"> /// <![CDATA[ /// 下面的代码演示了如何使用这个方法清除 URL“http://www.thinksea.com/default.aspx?id=1&name=thinksea”的参数“id=1”: /// ]]> /// </para> /// <code lang="C#"> /// <![CDATA[this.Response.Write(Thinksea.Web.RemoveUriParameter("http://www.thinksea.com/default.aspx?id=1&name=thinksea", "id")); /// ]]> /// </code> /// <para lang="C#"> /// 输出结果: /// <br/>http://www.thinksea.com/default.aspx?name=thinksea /// </para> /// </example> public static string RemoveUriParameter(string uri, string name) { var r = UriExtTool.Create(uri); r.RemoveUriParameter(name); return(r.ToString()); }
/// <summary> /// 为指定的 URI 设置参数。 /// </summary> /// <param name="uri">一个可能包含参数的 uri 字符串。</param> /// <param name="name">参数名。</param> /// <param name="value">新的参数值。</param> /// <returns>已经设置了指定参数名和参数值的 uri 字符串。</returns> /// <remarks> /// 如果指定的参数存在,则更改参数值为指定的新的参数值,否则,添加一个具有指定参数名和新的参数值的参数。 /// </remarks> /// <example> /// <para lang="C#"> /// <![CDATA[ /// 下面的代码演示了如何使用这个方法将 URL“http://www.thinksea.com/default.aspx?id=1&name=thinksea”的参数“id=1”更改为“id=2”: /// ]]> /// </para> /// <code lang="C#"> /// <![CDATA[this.Response.Write(Thinksea.Web.SetUriParameter("http://www.thinksea.com/default.aspx?id=1&name=thinksea", "id", "2")); /// ]]> /// </code> /// <para lang="C#"> /// 输出结果: /// <br/><![CDATA[http://www.thinksea.com/default.aspx?id=2&name=thinksea]]> /// </para> /// </example> public static string SetUriParameter(string uri, string name, string value) { var r = UriExtTool.Create(uri); r.SetUriParameter(name, value); return(r.ToString()); }
/// <summary> /// 从指定的 URI 中获取指定的参数的值。 /// </summary> /// <param name="uri">一个可能包含参数的 uri 字符串。</param> /// <param name="name">参数名。</param> /// <returns>指定参数的值,如果找不到这个参数则返回 null。</returns> /// <example> /// <para lang="C#"> /// <![CDATA[ /// 下面的代码演示了如何使用这个方法从 URL“http://www.thinksea.com/default.aspx?id=1&name=thinksea#mark1”中获取参数“id”的值“1”: /// ]]> /// </para> /// <code lang="C#"> /// <![CDATA[this.Response.Write("Par:" + Thinksea.Web.GetUriParameter("http://www.thinksea.com/default.aspx?id=1&name=thinksea#mark1", "id")); /// ]]> /// </code> /// <para lang="C#"> /// 输出结果: /// <br/>Par:1 /// </para> /// </example> public static string GetUriParameter(string uri, string name) { var r = UriExtTool.Create(uri); return(r.GetUriParameter(name)); }
/// <summary> /// 用指定的 URI 创建此实例。 /// </summary> /// <param name="uri">一个可能包含参数的 uri 字符串。</param> /// <returns>URI 解析实例。</returns> public static UriExtTool Create(string uri) { UriExtTool result = new UriExtTool(); int queryIndex = uri.IndexOf('?'); int sharpIndex; if (queryIndex > -1) { sharpIndex = uri.IndexOf('#', queryIndex + 1); } else { sharpIndex = uri.IndexOf('#'); } if (queryIndex > -1) { result.path = uri.Substring(0, queryIndex); } else if (sharpIndex > -1) { result.path = uri.Substring(0, sharpIndex); } else { result.path = uri; } if (sharpIndex > -1) { result.mark = uri.Substring(sharpIndex); } if (queryIndex > -1) { string queryString; if (sharpIndex > -1) { queryString = uri.Substring(queryIndex + 1, sharpIndex - queryIndex - 1); } else { queryString = uri.Substring(queryIndex + 1); } if (queryString.Length > 0) { result.query = new System.Collections.Generic.List <QueryItem>(); string[] queryList = queryString.Split('&', '?'); foreach (string item in queryList) { int enqIndex = item.IndexOf('='); if (enqIndex > -1) { result.query.Add(new QueryItem(item.Substring(0, enqIndex), item.Substring(enqIndex + 1))); } else { result.query.Add(new QueryItem(item, null)); } } } } return(result); }