字符串替换但仅在不包含在其他2个字符串中时

Ale*_*lex -1 c# string replace

想象一下,我string喜欢:

xxxstrvvv string xxxstringvvv str我是测试字符串.

我想查找和替换所有实例str使用xxxstrvvv是不是已经包含在那xxxvvv.

结果将是:

xxxstrvvv xxxstrvvving xxxstringvvv xxxstrvvv我是xxxstrvvving进行测试

有人知道一个简单的方法吗?

编辑:我想补充另一种情况来澄清.

xxxabcstrefgvvv

它不应该替换它,因为str包含在xxxvvv中

Dmi*_*nko 7

我建议使用正则表达式与负面展望背后:

string source = "xxxstrvvv string xxxstringvvv str I am string for testing.";

string result = Regex.Replace(source, @"(?<!xxx)str(?!vvv)", "xxxstrvvv");
Run Code Online (Sandbox Code Playgroud)

编辑:相同的方法,但编辑的问题有点不同的模式:

string result = Regex.Replace(
    source, 
  @"(?<!xxx[a-zA-Z]*)str(?![a-zA-Z]*vvv)", "xxxstrvvv");
Run Code Online (Sandbox Code Playgroud)

成果:

  1. source = "xxxstrvvv string xxxstringvvv str I am string for testing.":

    xxxstrvvv xxxstrvvving xxxstringvvv xxxstrvvv I am xxxstrvvving for testing.

  2. source = "xxxabcstrefgvvv":

    xxxabcstrefgvvv