替换列表<;字符串>;
本文关键字:字符串 gt lt 列表 替换 | 更新日期: 2023-09-27 18:08:31
我需要帮助解决以下问题
我有字符串:
string myString = "This is not a drill"
和字符串列表:
List<string> lst = {"January", "james", "not"}
我想查找列表中是否有任何项目在字符串中,并将其替换为$$string$$
所需输出:
"这不是训练$$">
感谢
更新
我试着用
termsList.Any(sentence.SentenceContent.Contains)
查找它是否包含在字符串中然后
Regex.Replace(input, textToFind, replace);
但它不起作用
简单。遍历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)));
不区分大小写:
将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)));