如何替换句子中的文本,但避免使用某些单词/字母
本文关键字:字母 单词 替换 何替换 句子 文本 | 更新日期: 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);
}
}
}
虽然这可以用一种更紧凑的内联方式来完成,但我认为这将更容易理解,并且与您的原始代码更相似。