我想在命令行中实现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)
任何指示/建议都表示赞赏。
答案 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
中包含参数(转换为整数)。
显然,这根本不是一般化的 - 你将方法名称放在正则表达式中,并且它采用了固定数量的参数 - 但它有望帮助你走上正确的轨道。