如何替换句子中的文本,但避免使用某些单词/字母

本文关键字:字母 单词 替换 何替换 句子 文本 | 更新日期: 2023-09-27 18:27:03

所以我有一个人的全名:

string fullName = "Bill Richardson";

假设,我有这样一句话:

string sentence = "Richardson had a bike and he loved it";

但是这个句子只包含这个人的姓氏,所以我把它替换成这样:

string modifiedSentence = null;
string[] senSplit = sentence.Split(' ');
foreach(string word in senSplit)
{
   if(fullName.Contains(word))
   {
      modifiedSentence = sentence.Replace(word,fullName);
   }
}

现在我希望修改后的句子是:

Bill Richardson有一辆自行车,他很喜欢

但很明显(我发现了问题),如果fullName甚至包含单词"a",它就会被全名取代,从而得到这样的结果:

Bill Richardson有Bill Richardson的自行车,他很喜欢

这是一场灾难,不是吗?:)如果可能的话,我该如何以另一种方式做到这一点?感谢

如何替换句子中的文本,但避免使用某些单词/字母

您可以执行此

modifiedSentence = new Regex(string.Join("|", fullName
    .Split(' '))).Replace(sentence, fullName, 1);
Console.WriteLine(modifiedSentence);

如果您不知道姓氏是fullName中的第一个还是第二个,则必须对两者进行迭代,而不是检查它是否包含单词,而是测试这两个单词之间的等效性。请注意,如果fullName已包含在原始句子中,则此操作不起作用。

var nameParts=fullName.Split(' ');
string modifiedSentence = null;
string[] senSplit = sentence.Split(' ');
foreach(string part in nameParts)
{
   foreach(string word in senSplit)
   {
      if(nameParts.Equals(word))
      {
         modifiedSentence = sentence.Replace(word,fullName);
      }
   }
}

虽然这可以用一种更紧凑的内联方式来完成,但我认为这将更容易理解,并且与您的原始代码更相似。