C# 替换字符串中的一个部分
我有一个字符串,如下所示:C# 替换字符串中的一个部分,c#,.net,C#,.net,我有一个字符串,如下所示: string str = "Key=abc;arg=pqr;lock=100;timeout=1;" string final ="Key=abc;lock=100;timeout=1;" string final = str.Replace("arg=pqr;", ""); 现在,我从字符串中替换此部分: arg=pqr; 因此,我的最终字符串如下所示: string str = "Key=abc;arg=pqr;lock=100;timeout=1;"
string str = "Key=abc;arg=pqr;lock=100;timeout=1;"
string final ="Key=abc;lock=100;timeout=1;"
string final = str.Replace("arg=pqr;", "");
现在,我从字符串中替换此部分:
arg=pqr;
因此,我的最终字符串如下所示:
string str = "Key=abc;arg=pqr;lock=100;timeout=1;"
string final ="Key=abc;lock=100;timeout=1;"
string final = str.Replace("arg=pqr;", "");
我试过如下方法:
string str = "Key=abc;arg=pqr;lock=100;timeout=1;"
string final ="Key=abc;lock=100;timeout=1;"
string final = str.Replace("arg=pqr;", "");
但问题是当pqr
更改为类似Lmn
的其他内容时,它将不起作用。我建议使用正则表达式来替换模式:“arg=“
后跟带有的字母数字值代码>:
string str = "Key=abc;arg=pqr;lock=100;timeout=1;";
string final = Regex.Replace(str, @"arg=[0-9a-zA-Z]*;", "");
一般情况下,您可以实现如下方法:
private static string RemoveRecord(string source, string name) {
string pattern = @"(?<!\w)" + Regex.Escape(name) + "=[0-9a-zA-Z]*;";
return Regex.Replace(source, pattern, "");
}
...
string final = RemoveRecord("Key=abc;arg=pqr;lock=100;timeout=1;", "arg");
private静态字符串删除记录(字符串源,字符串名称){
stringpattern=@”(?这可能对您有帮助
string cm = "Key=abc;arg=pqr;lock=100;timeout=1;";
string finalstr = Regex.Replace(cm, "arg=[^;]*;", "");
如果您不知道在arg=
之后和之前会发生什么;
另一种方法是使用split
删除string
,如果您不想使用Regex
string str = "Key=abc;arg=pqr;lock=100;timeout=1;";
var strUpdated = string.Join("arg=Lmn;", str.Split(new[] { "arg=pqr;" }, StringSplitOptions.None));
输出将是
Key=abc;arg=Lmn;lock=100;timeout=1;
如果您想删除字符串,只需将“arg=Lmn;”“
替换为”
,正如其他人所回答的那样,正则表达式自然适用于此字符串。(需要注意的一点是分号的处理,但由于您似乎有一个终止分号,因此正则表达式可以假定所有键/值对都以一结尾,因此在这种特殊情况下不会出现问题。)
下面是另一种方法,它不使用正则表达式,而是将字符串拆分并重新组合起来:
string str = "Key=abc;arg=Lmn;lock=100;timeout=1;";
str = RemoveArg(str);
// str == "Key=abc;lock=100;timeout=1;"
...
private static string RemoveArg(string str)
{
string[] originalKeyValuePairs = str.Split(';');
List<string> newKeyValuePairs = new List<string>();
foreach (var keyValuePair in originalKeyValuePairs)
{
string[] splitKeyValuePair = keyValuePair.Split('=');
if (splitKeyValuePair[0] != "arg")
{
newKeyValuePairs.Add(keyValuePair);
}
}
return string.Join(";", newKeyValuePairs);
}
替换字符串的另一种方法
string _originalstr = "Key=abc;arg=pqr;lock=100;timeout=1;";
var _newString = string.Join(";", _originalstr.Split(';').Where(x => x.Contains("arg") == false));
如何确定是pqr
还是lmn
或其他?不管怎样,将其放入变量并执行替换为什么不尝试以下操作:解析数据(格式似乎很简单),查找以arg=???
开头的一个,然后再将其放在一起。向下投票人是什么让你投票赞成向下投票的。你在这个问题中发现了什么错误。请注意发表评论,以便我下次提问时能有所察觉。有时很难就此提出问题,因为我不知道哪个问题会受到欢迎,所以w我没有发现你的问题有任何问题,所以我给了它一个向上的一票,以补偿向下的一票。假设我有这样的arg:arg=1pqr或arg=pqr1,然后???@Learning:然后稍微改变一下模式:@“arg=[0-9a-zA-Z]*;“
有什么区别?@Ramesh Rajendran:我已将0-9
范围添加到现有的a-zA-Z
我想OP询问时,字符串值正在动态变化。OP想要替换“arg=?”
——它可能是“arg=pqr”
,但也可能是“arg=Lmn”
。如果有一个参数arg2
嘿@ManfredRadlwimmer,可能会包含=
,这是一个很好的建议。请让我更新答案。:)非常感谢您的答案,我很高兴收到microsoft developer的答案:)