/// <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); } }