给出以下示例“字符串”:
我想在所有情况下删除令牌的名称/值对,所以我留下:
注意:由于各种原因,我无法使用Uri类。
是否有单个正则表达式或字符串函数可以执行此操作?
答案 0 :(得分:4)
我认为这会为你做(没有机会测试)。
string s = "somePage.aspx?id=20&name=brian&token=1234";
s = Regex.Replace(s, @"(&token=[^&\s]+|token=[^&\s]+&?)", "");
编辑已更新,以正确处理令牌是第一对的情况。
答案 1 :(得分:2)
(\btoken=[^&]*&|[\?&]token=[^&]*$)
此正则表达式删除了所有变体中的token
参数,包括令牌是唯一参数的变体:
<强>解释强>
第1部分:\btoken=[^&]*&
...捕获token
包括其值和终止&
这部分处理以下情况:
第2部分:[\?&]token=[^&]*$
...当token
显示为最后一个参数和/或唯一参数及其前导?
或&
时,会抓住{{1}}。
这部分处理以下情况:
答案 2 :(得分:2)
考虑使用HttpUtility.ParseQueryString(http://msdn.microsoft.com/en-us/library/ms150046.aspx)来解析和UriBuilder构建回来......
小心查询字符串中的所有编码和参数排序 - Uri类会帮助它。