gpt4 book ai didi

c# - 检查字符串是否为 `moSTLy` 大写的快速方法

转载 作者:行者123 更新时间:2023-11-30 12:21:33 28 4
gpt4 key购买 nike

我正在用 C# 为聊天室编写一个机器人,我想检测一条消息是否包含太多大写字母。如果消息的大写字母总数超过消息总长度的 三分之一 并且总长度大于 13,则消息包含太多大写字母。这是为了防止较小的消息被标记。

现在我正在遍历每个字符并查看它是否为大写。这对于长度合理的消息来说很好。但是,如果您遇到垃圾邮件发送者或巨魔,他们不会总是发布合理长度的消息。最大字符数限制为 2000,我无法更改它。使用我的方法,它开始在 500+ 个字符左右停止。这给了垃圾邮件发送者足够的时间来粘贴消息并再次发送,有效地淹没了聊天,而机器人却在努力跟上。

我目前的代码:

bool isMostlyUpper = (message.Count(c => char.IsUpper(c)) >= message.Length * 0.3f) && message.Length > 13;

我无法将消息与 string.ToUpper() 进行比较,因为我仍然想检测消息是否主要是大写而不是全部大写。

有没有办法不用遍历每个字符就可以做到这一点?或更快获得结果的方法?我可以添加检查以查看消息是否为 > 500,但有时会有 500+ 长消息可以通过。

有没有人有任何巧妙的解决方案?谢谢。

最佳答案

如果你在达到你的条件时跳出你的 foor 循环,在某些情况下你会节省一些时间

int count = 0;
float maxLenght = message.Length * 0.3f;
bool isMostlyUpper = false;

foreach (char c in message)
{
if (char.IsUpper(c))
{
count++;
}

if(count >= maxLenght)
{
isMostlyUpper = true;
break;
}

}

您还可以跟踪最后一条被标记的消息并将其与收到的新消息进行比较,这样可以阻止人们发送垃圾邮件,并且您不必多次重新计算同一消息。

关于c# - 检查字符串是否为 `moSTLy` 大写的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45356680/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com