我在Windows上使用C#。想象一下,我有一个像这样的字符串(这是一个POST请求数据):
?key=123&toke=64323sac&con=1
在一个条件中,con = 1参数应该从字符串中删除,而在另一个中,它应该在那里。我怎么处理呢?
另外,如果con
作为第一个参数,该怎么办?
我创建了一个程序,它从HTML表单中获取所有输入数据,然后我将使用原始POST请求发送它们。所以我有所有的数据,但有一个问题。应在条件中从POST数据字符串中删除其中一个参数(每次尝试的值可能不同)。我不想在HTML解析过程中应用这个条件,相反,它应该在获得完整字符串后删除。
答案 0 :(得分:1)
有必要:
拟议解决方案的实施:
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