You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

文本框指定单词检测功能异常:仅识别列表首个单词

问题分析与修复方案

嘿,我一眼就看出问题出在哪了——你的ContentCheck()方法里的foreach循环逻辑有问题!

现在的代码里,第一次循环检查第一个单词"duck"的时候,如果文本里不包含它,就直接return false了,后面的"donkey"、"horse"这些单词完全没机会被检查到。这就是为什么只能检测列表第一个单词的原因。

修复后的代码

只需要把循环里的else分支去掉,让循环遍历完所有过滤词再返回结果就行:

private bool ContentCheck() {
    List<string> FilteredWords = new List<string>() {
        "duck", "donkey", "horse", "goat", "dog", "cat",
        //list of censored words
        "lion", "tiger", "bear", "crocodile", "eel",
    };
    foreach (var e in FilteredWords) {
        if (memoEdit1.Text.Contains(e)) {
            return true; // 找到匹配的词,立刻返回true
        }
        // 不匹配就继续检查下一个词,不要提前返回false
    }
    // 所有词都检查完了,没有匹配的才返回false
    return false;
}

更简洁的写法(用LINQ)

如果你习惯用LINQ的话,还能把代码简化成一行,逻辑完全一样,可读性更强:

private bool ContentCheck() {
    List<string> FilteredWords = new List<string>() {
        "duck", "donkey", "horse", "goat", "dog", "cat",
        "lion", "tiger", "bear", "crocodile", "eel",
    };
    return FilteredWords.Any(word => memoEdit1.Text.Contains(word));
}

Any()方法会自动遍历整个列表,只要有一个单词被文本包含就返回true,全部不匹配才返回false,完美解决你的问题。

内容的提问来源于stack exchange,提问作者Ghost443

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:21:59