如何在命令行中实现Siri / Cortana之类的功能?

时间:2014-09-29 01:21:32

标签: ruby regex

我想在命令行中实现siri / cortana类似功能的一小部分。

例如

$ What is the sum of 100 and 1000
> Response: 1100
$ What is the product of 10 and 12
> Response: 120

问题是预定义的正则表达式。它需要在ruby中调用匹配函数。 模式:(\ d)+和(\ d)+的总和是多少 要调用的Ruby方法:sum(a,b)

任何指示/建议都表示赞赏。

2 个答案:

答案 0 :(得分:1)

这听起来和cucumber完全一样,也许看一看,看看你是否可以一起使用他们的类来破解一些东西:)?

答案 1 :(得分:1)

您可以执行以下操作:

question = gets.chomp
/\A.*(sum |product |quotient |difference )\D+([0-9]+)\D+([0-9]+).*\z/.match question
send($1, $2.to_i, $3.to_i)

对于在Ruby中匹配可能不熟悉的任何人的快速解释:

这从命令行获取一行输入并扫描它以获取函数名称(即sum,product等),后跟空格和可能的一些非数字字符。然后,它查找第一个数字(类似地后跟一个空格和0个或更多个非数字字符)和第二个数字后跟什么都没有。括号确定分配给前面带有$的变量的内容,即匹配第一组括号内容的子字符串被分配给$ 1.

接下来,它调用名称为$1的方法,其中$2$3中包含参数(转换为整数)。

显然,这根本不是一般化的 - 你将方法名称放在正则表达式中,并且它采用了固定数量的参数 - 但它有望帮助你走上正确的轨道。