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

时间:2016-01-02 14:17:23

标签: c#

我在Windows上使用C#。想象一下,我有一个像这样的字符串(这是一个POST请求数据):

?key=123&toke=64323sac&con=1

在一个条件中,con = 1参数应该从字符串中删除,而在另一个中,它应该在那里。我怎么处理呢?

另外,如果con作为第一个参数,该怎么办?

我创建了一个程序,它从HTML表单中获取所有输入数据,然后我将使用原始POST请求发送它们。所以我有所有的数据,但有一个问题。应在条件中从POST数据字符串中删除其中一个参数(每次尝试的值可能不同)。我不想在HTML解析过程中应用这个条件,相反,它应该在获得完整字符串后删除。

3 个答案:

答案 0 :(得分:1)

有必要:

  1. 将查询字符串解析为键和值的集合;
  2. 更改集合的相应密钥/值;
  3. 使用更改的集合构建结果查询字符串。
  4. 拟议解决方案的实施:

    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();
    

答案 1 :(得分:0)

使用此选项从字符串中删除参数:

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;

答案 2 :(得分:0)

您可以通过正则表达式尝试:

insecure

所以在你的例子中:

Regex.Replace(input, pattern, string.Empty)

(在Java中尝试过[正则表达式] - 希望它在C#中起作用)

//编辑:你的“有一次,然后是另一次没有:只需使用布尔值作为条件= D