【问题标题】:C# Multiple Word Replacement IssueC# 多字替换问题
【发布时间】:2013-01-08 03:24:34
【问题描述】:

考虑这样一种情况,我希望将文章中出现的每个短语“hello world”都替换为“I love apple”。我应该如何编写代码来进行替换?

我知道我可以简单地使用 Replace 函数进行替换,但这不是最理想的方法(如果我指定替换单词“or”,它也会替换单词“for “ ETC)。我还有其他方法可以实现我想要的吗?

【问题讨论】:

  • “我应该如何编写代码来进行替换?”。你试过什么?这是您实际面临的问题吗(请注意常见问题解答中说:“您应该只根据您面临的实际问题提出实际的、可回答的问题。”)。
  • 到目前为止您尝试过什么?您是否阅读过有关 C# 中字符串搜索和替换的内容?我的意思是,这是一个涵盖相当广泛的话题。毫无疑问,谷歌返回的内容不少于一百页。
  • @JonB:这个问题略有不同。他想用另一个词组合替换一个词组合而不替换一个词的一部分。所以每个字符串必须是一个完整的单词并且顺序很重要(我假设)。

标签: c# string replace


【解决方案1】:

您可以尝试使用 Regular Expressions 与后视:

String urstring = Regex.Replace(urstring,"(?<=\W)or|^or","SS")

这将替换所有前面没有字母或数字的“或”。

【讨论】:

    【解决方案2】:

    我认为你可以使用正则表达式

    using System;
    using System.Text.RegularExpressions;
    public class Test
    {
       public static void Main()
       {
           string input = "doin some replacement";
           string pattern = @"\bhello world'\b";
           string replace = "I love apple";
           string result = Regex.Replace(input, pattern, replace);        
        }
    }
    

    以下链接可能会有所帮助

    Way to have String.Replace only hit "whole words"

    【讨论】:

      【解决方案3】:

      使用正则表达式。这已经涵盖了,请参考以下内容:

      1. How can I replace a specific word in C#?

      2. replace text in a string with .net regexp

      【讨论】:

        【解决方案4】:

        【讨论】:

        • 如果单词/短语出现在字符串的开头或结尾,或者后面有标点符号,则会失败。
        猜你喜欢
        • 2011-11-24
        • 1970-01-01
        • 2013-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-04
        • 2015-10-11
        • 1970-01-01
        相关资源
        最近更新 更多