2014-06-12 30 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