替换List <string> </string>中的字符串中的字符串

时间:2014-06-12 12:15:51

标签: c# regex linq replace

我需要以下问题的帮助

我有字符串:

string myString = "This is not a drill"

和字符串列表:

List<string> lst = {"January", "james", "not"}

我想查找列表中的任何项目是否在字符串中,并将其替换为$$ string $$

想要输出:

“这是$$而不是一个钻头”

由于

更新

我尝试使用

termsList.Any(sentence.SentenceContent.Contains)

查找它是否包含在字符串中 然后

Regex.Replace(input, textToFind, replace);

但它没有用

1 个答案:

答案 0 :(得分:1)

简单。迭代List中的所有字符串,然后检查myString是否包含该字符串。如果是,则替换它。

foreach (string item in lst)
{
    if (myString.Contains(item))
    {
        myString = myString.Replace(item, string.Format("$${0}$$", item));
    }
}

您也可以使用LINQ:

lst.Where(item=> myString.Contains(item)).ToList()
   .ForEach(item => myString = myString.Replace(item, string.Format("$${0}$$", item)));

您还可以按空格分割字符串,并检查它们是否存在于List中:

 myString.Split(' ').ToList()
         .Where(x => lst.Contains(x)).ToList()
         .ForEach(item => myString = myString.Replace(item, string.Format("$${0}$$", item)));

不区分大小写

Contains(x)更改为Contains(x, StringComparer.OrdinalIgnoreCase)

例如第三种方法:

 myString.Split(' ').ToList()
         .Where(x => lst.Contains(x, StringComparer.OrdinalIgnoreCase)).ToList()
         .ForEach(item => myString = myString.Replace(item, string.Format("$${0}$$", item)));