C# 在Xpath中替换行Iem

C# 在Xpath中替换行Iem,c#,.net,regex,xpath,C#,.net,Regex,Xpath,我有一个行项目,如: //FirstString/Second[001]/LastString 我需要使用Xpath将[001]替换为[002] 更换后,行项目应如下所示: //FirstString/Second[002]/LastString 我在C#中尝试了以下方法: if (xpath.Contains("/Second") && xpath.Contains("[")) { xpath = xpath.Remove(xpath.In

我有一个行项目,如:

//FirstString/Second[001]/LastString
我需要使用Xpath将[001]替换为[002]

更换后,行项目应如下所示:

//FirstString/Second[002]/LastString
我在C#中尝试了以下方法:

   if (xpath.Contains("/Second") && xpath.Contains("["))
      {
        xpath = xpath.Remove(xpath.IndexOf("[")).Trim();
        xpath = xpath.Replace("Second", "Second[002]");

      }
但它不能正常工作

我得到的结果:
//FirstString/Second[002]

而不是
//FirstString/Second[002]/LastString

有什么想法吗

提前谢谢

Regex解决方案:

var input = "//FirstString/Second[001]/LastString";

var result = Regex.Replace(input, @"(?<=Second\[)\d+(?=\])", "002");
var input=“//FirstString/Second[001]/LastString”;
var result=Regex.Replace(输入,@“(?Regex解决方案:

var input = "//FirstString/Second[001]/LastString";

var result = Regex.Replace(input, @"(?<=Second\[)\d+(?=\])", "002");
var input=“//FirstString/Second[001]/LastString”;

var result=Regex.Replace(输入,@)(?要完成Kirill的回答,您的解决方案的问题是:

xpath = xpath.Remove(xpath.IndexOf("[")).Trim();
这样,行“//FirstString/Second[001]/LastString”将变为“//FirstString/Second”,因为在MSDN上写入的Remove(int32)将删除该字符串中从指定位置开始并一直到最后一个位置的所有字符

你应该试试这样的东西

xpath = xpath.Remove(xpath.IndexOf("["), "[001]".Length).Trim();

但显然,使用正则表达式的解决方案要好得多。

为了完成Kirill的回答,您的解决方案的问题在于:

xpath = xpath.Remove(xpath.IndexOf("[")).Trim();
这样,行“//FirstString/Second[001]/LastString”将变为“//FirstString/Second”,因为在MSDN上写入的Remove(int32)将删除该字符串中从指定位置开始并一直到最后一个位置的所有字符

你应该试试这样的东西

xpath = xpath.Remove(xpath.IndexOf("["), "[001]".Length).Trim();
但显然,使用正则表达式的解决方案要好得多。

您应该使用

你应该使用


如果我有多行,比如://FirstString/Second[001]/LastString,FirstString/Second[003]/LastString,FirstString/Second[004]/LastString,我想在每个类似项中用[002]替换[001]、[003]和[004]。我该怎么做呢?谢谢你的回答。我尝试了这个方法,它适用于多行项:If(xpath.Contains)(“/Second”)&&xpath.Contains(“[”){xpath=Regex.Replace(xpath,@“(?@Dhruba,不客气!所以说“谢谢”的最好方式是标记为答案或向上投票:-),如果我有多行,如:://FirstString/Second[001]/LastString,FirstString/Second[003]/LastString,FirstString/Second[004]/LastString,我想在每个类似的项目中用[002]替换[001]、[003]和[004]。我该怎么做?谢谢你的回答。我尝试了这个方法,它适用于多行项目:if(xpath.Contains(“/Second”)&&xpath.Contains(“[”){xpath=Regex.Replace(xpath,@“(?@Dhruba,不客气!所以说“谢谢”的最好方式是标记为答案或向上投票:-)