SignalR bot仅检查确切的大小写消息.包含.拼写错误怎么样?

tea*_*ler 2 c# bots

我有一个机器人会响应某些触发词

 if (message.Contains("trigger"))
            {
                HandleTrigger(message);
                return ;
            }
Run Code Online (Sandbox Code Playgroud)

我怎么能通过一种允许像'triger'或'triggr'这样的拼写错误的方式来实现这个概念,这样它仍然可以达到这个断点并返回 HandleTrigger(message);

更多上下文代码:

void HandleTrigger(string message)
        {
            if (message.Contains("trigger2"))
            {
                ReplyMessage(viewTriggerMessage);
                ReplyMessage(repeatMessage);
                return;
            }
            if (message.Contains("trigger3"))
            {
                ReplyMessage(anotherMyTriggerMessage);
                return;
            }
Run Code Online (Sandbox Code Playgroud)

Pra*_*ose 5

您的问题似乎不是SignalR问题.它更多的是匹配拼写错误的单词.有一种称为Double Metaphone的算法可用于匹配拼写错误的单词.它的工作原理是语音匹配.您可以在这里阅读更多关于算法的信息http://en.wikipedia.org/wiki/Metaphone#Double_Metaphone

您可以在此链接上找到C#实现.https://code.google.com/p/doublemetaphone/

将上述链接中的类添加到项目后,您将获得一个名为GenerateDoubleMetaphone()的String变量的扩展方法

然后你可以比较metaphones以检查相似性.在您的示例中,您可以像这样编写if条件

if ("trigger".GenerateDoubleMetaphone().Equals(message.GenerateDoubleMetaphone()))
{
//Execute code for a match
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,"触发器"和"触发器"的元电话都是"TRKR",因此将匹配.