过滤坏词 [重复]

Filtering bad words [duplicate]

提问人:Nik 提问时间:8/21/2023 最后编辑:Uwe KeimNik 更新时间:8/21/2023 访问量:59

问:

.Net 版本是 4.7.1(没有字符串的第三个参数。替换为 ignorecase)

badwords = ["home", ...]
text = "Home, hhhome HOME, HOme Hhome1212, H o M e"
expected result: "****, hh**** ****, **** H****1212, *******"

有必要忽略文本的大小写,同时保持其原始大小写

public string Filter(string text)
{
    foreach (var badword in _badwords)
    {
        text = text.Replace(badword, new string('*', badword.Length));
    }

    return text;
}
C# 字符串 筛选器 替换 黑名单

评论

3赞 Jon Skeet 8/21/2023
你有没有看过重载,看看那里是否有一些东西会影响字符串的区分度?string.Replace
0赞 paddy 8/21/2023
听起来像是正则表达式替换的工作。
0赞 Nik 8/21/2023
字符串。替换 no 有第三个参数
0赞 Panagiotis Kanavos 8/21/2023
@Nik确实如此。有 4 个重载,其中 2 个允许指定不区分大小写的替换
0赞 Nik 8/21/2023
我只有字符串。替换 (string oldValue, string newValue) 和 string.替换 (char oldValue, char newValue)

答:

2赞 Rafal Kozlowski 8/21/2023 #1

只需将第三个参数传递给方法并将其指定为 or 或 。string.ReplaceStringComparison.CurrentCultureIgnoreCaseStringComparison.InvariantCultureIgnoreCaseStringComparison.OrdinalIgnoreCase