我有一个机器人会响应某些触发词
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)
您的问题似乎不是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",因此将匹配.
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |