如何从字符串中删除类似POST的(&;name=value)参数
本文关键字:amp name 参数 value 字符串 删除 POST | 更新日期: 2023-09-27 18:28:39
我正在使用C#for Windows。想象一下,我有一个这样的字符串(这是POST请求数据):
?key=123&toke=64323sac&con=1
在一个条件下,con=1参数应该从字符串中删除,而在另一个条件中,它应该在那里。我该怎么处理?
另外,如果con
作为第一个参数,会怎样?
我制作了一个程序,从HTML表单中获取所有输入数据,并使用原始POST请求发送这些数据。所以我有所有的数据,但有一个问题。在一个条件下,其中一个参数(每次尝试的值可能不同)应该从POST数据字符串中删除。我不想在HTML解析过程中应用该条件,相反,它应该在获得完整字符串后删除。
这是必要的:
- 将所述查询字符串解析为键和值的集合
- 更改集合的适当键/值
- 以使用更改后的集合生成结果查询字符串
拟议解决方案的实施:
using System.Collections.Specialized;
using System.Web;
<...>
const string InitialQueryString = "?key=123&toke=64323sac&con=1";
// 1. Parsing.
NameValueCollection queryStringValues = HttpUtility.ParseQueryString(InitialQueryString);
// 2. Changing.
// The additional values can be added.
queryStringValues.Add("custom_key", "custom_value");
// The existing values can be removed using their keys.
if (the_condition)
{
queryStringValues.Remove("con");
}
// 3. Building.
string queryString = queryStringValues.ToString();
使用此选项从字符串中删除一个参数:
string remove = "con";
string sep = "?";
string result = "";
foreach (string p in postString.Replace("?", "").Split("&"))
{
if (p.Split("=")[0] != remove)
{
result += sep + p;
sep = "&";
}
}
return result;
您可以通过Regex:进行尝试
Regex.Replace(input, pattern, string.Empty)
所以在你的例子中:
String pattern = "&" + parameterName + "([^&]*)"; // where parameterName e.g. = con
(在Java中尝试过[正则表达式]-希望它也能在C#中工作)
//编辑:您的"一次在那里,另一次不在:只需使用布尔值作为条件=D