通过替换来审查字符串 [] 中的单词

本文关键字:单词 字符串 替换 审查 | 更新日期: 2023-09-27 17:56:39

我正在为一个游戏制作一个审查程序,.dll我不知道该怎么做。我有一串单词和句子。我已经找到了如何过滤单词和阻止消息的方法。现在我正在尝试用与单词长度相同的 * 替换单词。例如,如果有人说"去他妈的那个愚蠢的屁股",它会变成**** that stupid ***.以下是我正在使用的代码

        public void Actionfor(ServerChatEventArgs args)
    {
        var player = TShock.Players[args.Who];
        if (!args.Text.ToLower().StartsWith("/") || args.Text.ToLower().StartsWith("/w") || args.Text.ToLower().StartsWith("/r") || args.Text.ToLower().StartsWith("/me") || args.Text.ToLower().StartsWith("/c") || args.Text.ToLower().StartsWith("/party"))
        {
            foreach (string Word in config.BanWords)
            {
                if (player.Group.HasPermission("caw.staff"))
                {
                    args.Handled = false;
                }
                else if (args.Text.ToLower().Contains(Word))
                {
                    switch (config.Action)
                    {
                        case "kick":
                            args.Handled = true;
                            TShock.Utils.Kick(player, config.KickMessage, true, false);
                            break;
                        case "ignore":
                            args.Handled = true;
                            player.SendErrorMessage("Your message has been ignored for saying: {0}", Word);
                            break;
                        case "censor":
                            args.Handled = false;
                            var wordlength = Word.Length;
                            break;
                        case "donothing":
                            args.Handled = false;
                            break;
                    }
                }
            }
        }
        else
        {
            args.Handled = false;
        }
    }
   public string[] BanWords = { "fuck", "ass", "can i be staff", "can i be admin" };

在我的"审查员"的情况下,有些地方有这样的代码

Word = Word.Replace(Word, new string("*", Word.Length));

但是我总是收到一个错误,无法将字符串转换为字符,并且无法弄清楚其他事情。

通过替换来审查字符串 [] 中的单词

编译器告诉你问题;你想要的String的过载需要charint,而不是stringint

它正在尝试将*从字符串转换为字符。 将双引号"替换为单引号 '

对于chars,请使用单引号'而不是双引号"如下所示:

new string('*', Word.Length)

在您的代码中,您不需要替换。只需做:

Word = new string('*', Word.Length);