如何从字符串中删除类似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解析过程中应用该条件,相反,它应该在获得完整字符串后删除。

如何从字符串中删除类似POST的(&;name=value)参数

这是必要的:

  1. 将所述查询字符串解析为键和值的集合
  2. 更改集合的适当键/值
  3. 以使用更改后的集合生成结果查询字符串

拟议解决方案的实施:

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