C#如何使用Lambda表达式批量移除字符串中指定的无用词汇
错误原因
Select为投影操作,返回值类型为IEnumerable<string>,无法直接赋值给string类型变量,首先会触发编译报错。- 即使单独遍历
Select返回的集合,每次替换逻辑都是基于原始input字符串执行,没有复用前一次替换后的结果,最终只能得到单次替换的效果,无法实现所有违禁词的批量移除。
解决方案
使用LINQ的Aggregate累加器即可实现单Lambda表达式完成所有替换操作,代码如下:
string output = _unWantedWords.Aggregate(input, (current, unwantedWord) => current.Replace(unwantedWord, string.Empty));
实现逻辑
Aggregate的第一个入参为迭代初始值,即待处理的原始输入字符串input- 第二个入参为迭代执行逻辑:
current存储上一轮替换后的字符串结果,unwantedWord为当前遍历到的违禁词,每轮执行替换后返回新的字符串作为下一轮迭代的current值 - 所有违禁词遍历完成后,返回的最终结果即为已移除全部违禁词的目标字符串
示例输入执行后得到的输出结果为mdjw ksjc d fjwu,符合预期要求。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

