我有一个机器人会响应某些触发词
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;
}
答案 0 :(得分:5)
您的问题似乎不是SignalR问题。它更多的是匹配拼写错误的单词。有一种称为Double Metaphone的算法可用于匹配拼写错误的单词。它的工作原理是语音匹配。您可以在此处阅读有关此算法的更多信息http://en.wikipedia.org/wiki/Metaphone#Double_Metaphone
您可以在此链接上找到C#实现。 https://code.google.com/p/doublemetaphone/
将上述链接中的类添加到项目后,您将获得一个名为GenerateDoubleMetaphone()的String变量的扩展方法
然后你可以比较手机以检查相似性。在您的示例中,您可以像这样编写if条件
if ("trigger".GenerateDoubleMetaphone().Equals(message.GenerateDoubleMetaphone()))
{
//Execute code for a match
}
在上面的示例中,“触发器”和“触发器”的元电话都是“TRKR”,因此会匹配。
答案 1 :(得分:3)
您还可以使用Soundex算法代码生成可以正确分类的简单输出。
这主要用在SQL数据库中,用于查找类似拼写的字符串。
Console.WriteLine(Soundex.For("Trigger"));
//输出'T626'
Console.WriteLine(Soundex.For("Triggr"));
//输出'T626'