C# 从字符串中删除列出的值,包括与其他值合并

C# 从字符串中删除列出的值,包括与其他值合并,c#,string,list,C#,String,List,我正在尝试删除列出的特定值: var List = new List<string> { "sun", "open", "look", "night", "cat"}; 像这样: string[] inputs = str.Split(' '); StringBuilder sbResult = new StringBuilder(); foreach (var input in inputs) { if (!List.Contains(input)) {

我正在尝试删除列出的特定值:

var List = new List<string> { "sun", "open", "look", "night", "cat"};
像这样:

string[] inputs = str.Split(' ');
StringBuilder sbResult = new StringBuilder();
foreach (var input in inputs)
{
    if (!List.Contains(input))
    {
        sbResult.AppendFormat("{0} ", input);
    }
}
string result = sbResult.ToString().Trim();
但这种方式仅适用于相等的单词,但如果列出的单词与其他单词合并,则不会删除:

"hello, sunday, opening, midnight"
所需输出必须为:

"hello, day, ing, mid"

这里我必须注意两件事,我想用它来表示列表中大约90000的大量值,输入字符串长约100个字甚至更多

用一行解决方案给教授留下深刻印象

string str = "hello, sunday, opening, look, midnight, cat";
var list = new List<string> { "sun", "open", "look", "night", "cat" };
list.ForEach(a => str = str.Replace(a, ""));
Console.WriteLine(str);
string str=“你好,周日,开幕式,看,午夜,猫”;
var list=新列表{“太阳”、“打开”、“外观”、“夜晚”、“猫”};
list.ForEach(a=>str=str.Replace(a,“”);
控制台写入线(str);

用一行解决方案给教授留下深刻印象

string str = "hello, sunday, opening, look, midnight, cat";
var list = new List<string> { "sun", "open", "look", "night", "cat" };
list.ForEach(a => str = str.Replace(a, ""));
Console.WriteLine(str);
string str=“你好,周日,开幕式,看,午夜,猫”;
var list=新列表{“太阳”、“打开”、“外观”、“夜晚”、“猫”};
list.ForEach(a=>str=str.Replace(a,“”);
控制台写入线(str);
var关键字列表=新列表{“太阳”、“打开”、“查看”、“夜晚”、“猫”};
string str=“你好,周日,开幕式,看,午夜,猫”;
var strList=str.Split(',).Select(i=>i.Trim()).ToList();
foreach(关键字列表中的var关键字)
{
for(int i=0;ii!=String.Empty).Aggregate((a,b)=>a+“,”+b);
var关键字列表=新列表{“太阳”、“打开”、“查看”、“夜晚”、“猫”};
string str=“你好,周日,开幕式,看,午夜,猫”;
var strList=str.Split(',).Select(i=>i.Trim()).ToList();
foreach(关键字列表中的var关键字)
{
for(int i=0;ii!=String.Empty).Aggregate((a,b)=>a+“,”+b);

Aggregate
Console.WriteLine(list.Aggregate(str,(r,w)=>r.Replace(w,”));
)会看起来更漂亮(无需在线):)。。。这方面的表现非常值得怀疑,但应作为基本任务或面试问题的起点通过。此外,它还保留空单词-因此可能需要拆分/合并以获得准确的结果。@John Wu您好,是的,我测试了90000个单词,结果正常,我认为这是一个很好的答案
Aggregate
Console.WriteLine(list.Aggregate)(str,(r,w)=>r.Replace(w,”);
)看起来更漂亮(少线):。。。这方面的表现非常值得怀疑,但应作为基本任务或面试问题的起点通过。此外,它还保留空单词-因此可能需要拆分/合并以获得准确的结果。@John Wu您好,是的,我测试了90000个单词,结果有效,我认为这是一个好答案
var keywordList = new List<string> { "sun", "open", "look", "night", "cat"};
string str = "hello, sunday, opening, look, midnight, cat";

var strList = str.Split(',').Select(i => i.Trim()).ToList();

foreach (var keyword in keywordList)
{
    for (int i = 0; i < strList.Count; i++)
    {
        strList[i] = strList[i].Replace(keyword, String.Empty);
    }
}

str = strList.Where(i => i != String.Empty).Aggregate((a, b) => a + ", " + b);