c# - 如何仅使用 2 replace 替换完全匹配的字符串

标签 c#

我正在尝试替换字符串,但由于匹配词很少,所以它同时替换了两个字符串。

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/

相关文章:

c# - RemoteEndPoint 与 LocalEndPoint

c# - 有没有一种更有效的方法可以根据选中的复选框来做事?

c# - 将 TLB 导入 C#

c# - 如何通过 Unicode 值对 Web.Config 中的字符进行编码

c# - 从 F# Interactive 使用 RavenDb FilesStore 挂起

c# - 无法将类型 'decimal' 隐式转换为 'int' 。存在显式转换(您是否缺少类型转换?)

c# - .net 2.0 的 Dispatcher.Invoke 模拟

c# - MonoTouch.Dialog 搜索过滤器不适用于 MessageElement 单元格

c# - 捆绑和缩小不使用 Asp.net 4.0 C# 应用 css 和 js

c# - AspNet Core 5.0并注册自定义NLog LayoutRenderer