如何用C#提取URL查询串中Group参数的所有值并存入列表
原有代码问题说明
string.Remove()方法不支持直接传入字符串做匹配删除,仅支持传入索引/索引+长度参数进行截取,且字符串是不可变类型,调用修改方法后必须赋值给新变量才会生效,原有写法不会改变qs的实际值- 代码中遍历用的
param1没有做声明定义,无法正常编译运行
正确实现方案
方案1:使用.NET内置工具类解析(推荐)
用专门的查询字符串解析类处理,自动兼容多值、转义编码等各类边界情况,.NET Framework 可引用System.Web命名空间下的HttpUtility实现:
using System.Web; using System.Collections.Generic; using System.Linq; var qs = "Group=1&Group=2&Group=3&Group=4"; var parsedQuery = HttpUtility.ParseQueryString(qs); // 直接提取所有Group参数的值到列表 List<string> groupValues = parsedQuery.GetValues("Group")?.ToList() ?? new List<string>(); // 输出验证 foreach (var s in groupValues) { Console.WriteLine(s); }
.NET Core/.NET 5+ 项目可使用Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery方法实现相同效果,无需引用System.Web
方案2:手动分割实现(无额外依赖)
如果不想引入额外命名空间,可手动拆分字符串处理:
using System.Collections.Generic; var qs = "Group=1&Group=2&Group=3&Group=4"; List<string> groupValues = new List<string>(); // 按&分割所有键值对 var allPairs = qs.Split('&'); foreach (var pair in allPairs) { // 按=拆分键和值 var kv = pair.Split('='); if (kv.Length == 2 && kv[0] == "Group") { groupValues.Add(kv[1]); } } // 输出验证 foreach (var s in groupValues) { Console.WriteLine(s); }
内容的提问来源于stack exchange,提问作者JustVib
相关产品推荐
相关产品推荐

