Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 替换字符串中的一个部分_C#_.net - Fatal编程技术网

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的答案:)