我正在制作游戏的审查程序。我无法弄清楚如何做到这一点。我有一个单词和句子的字符串[]。我发现了如何过滤单词并阻止消息。现在我正在尝试将*替换为与单词长度相同的单词。例如,如果有人说"他妈的那个愚蠢的屁股"它将以**** 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,也无法弄清楚其他事情。
答案 0 :(得分:5)
编译器正在告诉你这个问题; the overload of String
you want需要char
和int
,而不是string
和int
。
它试图将*
从字符串转换为char。将双引号"
替换为单引号'
。
答案 1 :(得分:2)
对于chars
,请使用单引号'
而不是双引号"
,如下所示:
new string('*', Word.Length)
在您的代码中,您无需替换。只需:
Word = new string('*', Word.Length);