我正在尝试替换字符串,但由于匹配词很少,所以它同时替换了两个字符串。
Val1 = "CASE WHEN [" + isParent + "] = 0 THEN 'False' WHEN [" + isParent + "] = 1 THEN 'True' END ";
Val2 = "CASE WHEN [" + isChild + "] = 0 THEN 'False' WHEN [" + isChild + "] = 1 THEN 'True' END ";
val3 = str.Replace("IS_PARENT", Val1 ).Replace("IS_CHILD", val2);
在我的
str = "IS_PARENT, IS_CHILD_WITH_ROLE, IS_CHILD";
IS_CHILD 出现在两个地方,因此它替换了两个 IS_CHILD。
我只想替换确切的单词 IS_CHILD。
怎么做?
最佳答案
您可以使用 Regex.Replace
string newString = Regex.Replace(str, @"\bIS_CHILD\b", replacedText);
编辑: 如果您想用与 IS_CHILD 相同的条件替换 IS_PARENT (仅替换整个单词)
string newString = Regex.Replace(newString, @"\bIS_PARENT\b", "NEW TEXT");
newString = Regex.Replace(str, @"\bIS_CHILD\b", replacedText);
OR (这没有优化并且在答案中,因为它是替换单个单词的一种方法)
您可以根据空格拆分字符串,然后在替换完整的单词后使用string.Join 创建一个新的字符串。
string str = "IS_PARENT, IS_CHILD_WITH_ROLE, IS_CHILD";
string replacedText = "SomeThing";
string newString = string.Join(" ", str.Split()
.Select(r => r == "IS_CHILD" ? replacedText : r));
新字符串将是:
IS_PARENT, IS_CHILD_WITH_ROLE, SomeThing
关于c# - 如何仅使用 2 replace 替换完全匹配的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14273033/