通过替换来删除string []中的单词

时间:2014-04-05 02:19:04

标签: c# string replace

我正在制作游戏的审查程序。我无法弄清楚如何做到这一点。我有一个单词和句子的字符串[]。我发现了如何过滤单词并阻止消息。现在我正在尝试将*替换为与单词长度相同的单词。例如,如果有人说"他妈的那个愚蠢的屁股"它将以**** 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" };

有些地方的代码类似于我的情况" censor"

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

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

2 个答案:

答案 0 :(得分:5)

编译器正在告诉你这个问题; the overload of String you want需要charint,而不是stringint

它试图将*从字符串转换为char。将双引号"替换为单引号'

答案 1 :(得分:2)

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

new string('*', Word.Length)

在您的代码中,您无需替换。只需:

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