我有一个机器人可以响应某些触发词
if (message.Contains("trigger"))
{
HandleTrigger(message);
return ;
}
我怎样才能通过一种允许“triger”或“triggr”等拼写错误的方法来避免这个概念,这样它仍然会遇到这个断点并返回 HandleTrigger(message);
上下文的更多代码:
void HandleTrigger(string message)
{
if (message.Contains("trigger2"))
{
ReplyMessage(viewTriggerMessage);
ReplyMessage(repeatMessage);
return;
}
if (message.Contains("trigger3"))
{
ReplyMessage(anotherMyTriggerMessage);
return;
}
最佳答案
您的问题似乎不是 SignalR 问题。它更多的是关于匹配拼写错误的单词。有一种称为双变音位的算法可以用来匹配拼写错误的单词。它的工作原理是语音匹配。您可以在此处阅读有关该算法的更多信息 http://en.wikipedia.org/wiki/Metaphone#Double_Metaphone
您可以在此链接上找到 C# 实现。 https://code.google.com/p/doublemetaphone/
将上述链接中的类添加到您的项目后,您将获得一个名为 GenerateDoubleMetaphone() 的字符串变量扩展方法
然后您可以比较变音位以检查相似性。在你的例子中,你可以这样写你的 if 条件
if ("trigger".GenerateDoubleMetaphone().Equals(message.GenerateDoubleMetaphone()))
{
//Execute code for a match
}
在上面的示例中,“trigger”和“trigr”的变音位都是“TRKR”,因此将匹配。
关于c# - SignalR bot 仅检查确切的案例消息。包含。拼写错误怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29265983/