2014-06-12 31 views
-5

我需要用下面的问题帮助替换字符串中的字符串,它是在一个列表<string>

我有字符串:

string myString = "This is not a drill" 

和字符串列表:

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

我想查找列表中的任何项目是否在字符串中,并用$$ $$ $$

想输出:

使用

termsList.Any(sentence.SentenceContent.Contains) 

发现,如果 “这不是$$ $$钻”

感谢

更新

我试着包含在字符串 中,然后

Regex.Replace(input, textToFind, replace); 

但它没有工作

+6

敢我问...你尝试过什么? –

+1

@Bergkamp,不要在评论中发布更多的细节,而是编辑你的问题。 –

+0

你甚至没有seacrh,没​​有找到string.Contains()方法? – apomene

回答

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))); 

您也可以分割字符串,并检查他们的存在列表与否:

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

案例insensivity

变化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))); 
+0

这看起来很贵 – Bergkamp

+1

'contains'检查并没有太大的收获。 – Rawling

+3

Farhad免费赠送给你 – apomene