关于C#中设置URL参数的说明

/// <summary>
/// 设置URL参数
/// </summary>
/// <param name="url">要设置参数的URL</param>
/// <param name="name">参数名</param>
/// <param name="value">参数值</param>
/// <returns>返回设置参数后的URL</returns>
public string SetUrlParam(string url, string name, object value)
{
    // 获取URL地址中参数开始索引
    int index = url.IndexOf("?");
    // 判断URL地址中是否有参数
    if (index >= 0)
    {
        // 获取不带参数的URL地址
        string baseUrl = url.Substring(0, index);
        // 获取URL地址中的参数信息
        string paramUrl = url.Substring(index);
        // 判断要设置的参数是否是第一个参数
        if (paramUrl.StartsWith("?" + name + "="))
        {
            // 获取要设置的参数后面的参数开始的索引
            index = paramUrl.IndexOf("&");
            // 判断后面是否有参数
            if (index >= 0)
            {
                // 有参数则构造新的URL地址
                return string.Format("{0}?{1}={2}{3}", baseUrl, name, value, paramUrl.Substring(index));
            }
            else
            {
                // 没参数则构造新的URL地址
                return string.Format("{0}?{1}={2}", baseUrl, name, value);
            }
        }
        else
        {
            // 不是第一个参数则获取要设置参数的索引位置
            index = paramUrl.IndexOf("&" + name + "=");
            // 判断是否存在要设置的参数
            if (index >= 0)
            {
                // 获取要设置参数的前面的参数
                string temp1 = paramUrl.Substring(0, index);
                // 获取要设置参数的后面的参数
                string temp2 = paramUrl.Substring(index + ("&" + name + "=").Length);
                // 获取要设置的参数后面的参数开始的索引
                index = temp2.IndexOf("&");
                // 判断后面是否有参数
                if (index >= 0)
                {
                    // 有参数则构造新的URL地址
                    return string.Format("{0}{1}&{2}={3}{4}", baseUrl, temp1, name, value, temp2.Substring(index));
                }
                else
                {
                    // 没参数则构造新的URL地址
                    return string.Format("{0}{1}&{2}={3}", baseUrl, temp1, name, value);
                }
            }
            else
            {
                // 不存在参数则构造新的URL地址
                return string.Format("{0}&{1}={2}", url, name, value);
            }
        }
    }
    else
    {
        // 原URL地址中没参数则直接构成新的URL地址
        return string.Format("{0}?{1}={2}", url, name, value);
    }
}

发表回复