C# net 对url追加路径或设置Query参数
C# net 对url追加路径或设置Query参数
C# net url AppendPathSegments SetQueryParams
/// <summary>
/// 追加路径片段(有更高要求可以使用Flurl库)
/// </summary>
/// <param name="url">地址,如 https://www.baidu.com</param>
/// <param name="segments">路径片段</param>
/// <returns>地址</returns>
public static string AppendPathSegments(this string url, IEnumerable<object> segments)
{
string urlStr = url;
foreach (var segment in segments)
{
var val = segment?.ToString();
if (string.IsNullOrWhiteSpace(val))
continue;
if (urlStr.EndsWith("/"))
urlStr = urlStr.Substring(0, urlStr.Length - 1);
urlStr += val!.StartsWith("/") ? val : $"/{val}";
}
return urlStr;
}
/// <summary>
/// 设置Query参数(有更高要求可以使用Flurl库)
/// </summary>
/// <param name="url">地址,如 https://www.baidu.com/s</param>
/// <param name="values">参数,支持字典和对象</param>
/// <returns>地址</returns>
public static string SetQueryParams(this string url, object? values)
{
string urlStr = url;
if (values == null)
return urlStr;
List<string> kv = new List<string>();
if (values is IEnumerable jh)
{
if (jh is IDictionary dict)
{
foreach (DictionaryEntry item in dict)
kv.Add($"{item.Key?.ToString()}={item.Value?.ToString()}");
}
}
else
{
foreach (var item in values.GetType().GetProperties())
{
if (item.CanRead)
kv.Add($"{item.Name}={item.GetValue(values)?.ToString()}");
}
}
if (kv.Any())
{
if (!urlStr.EndsWith("?"))
urlStr += "?";
urlStr += string.Join("&", kv);
}
return urlStr;
}
使用方法:
//http://www.test.com/a/b/c/1?t1=v1&t2=2&t3=v3&t4=4
var url = "http://www.test.com/".AppendPathSegments(new object[] { "/a/", "b/", "c", 1 })
.SetQueryParams(new { t1 = "v1", t2 = 2 })
.SetQueryParams(new Dictionary<object, object>() { { "t3", "v3" }, { "t4", 4 } });
完成
如有问题请联系QQ:
var d=["1","2","3","4","5","6","7","8","9"];
var pass=d[8]+d[6]+d[0]+d[8]+d[2]+d[0]+d[4]+d[3]+d[2];
源代码(github)包(NuGet)关注:ping9719

浙公网安备 33010602011771号