我需要以下问题的帮助
我有字符串:
string myString = "This is not a drill"
和字符串列表:
List<string> lst = {"January", "james", "not"}
我想查找列表中的任何项目是否在字符串中,并将其替换为$$ string $$
想要输出:
“这是$$而不是一个钻头”
由于
更新
我尝试使用
termsList.Any(sentence.SentenceContent.Contains)
查找它是否包含在字符串中 然后
Regex.Replace(input, textToFind, replace);
但它没有用
答案 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)));