Ruby on rails 通过使用ruby比较两个字符串来删除重复的句子

Ruby on rails 通过使用ruby比较两个字符串来删除重复的句子,ruby-on-rails,ruby,algorithm,Ruby On Rails,Ruby,Algorithm,我想在ruby中编写一个算法,如果句子可以删除,则返回true,如果不能删除,则返回false 例如: 可以删除的字符串=我的钥匙在哪里? by=我的 在这种情况下,不应删除字符串,因为by不是完整的句子 我的进步到现在 def deletable?(字符串,由:) 如果string.length==by.length,则返回false arr=by.split.map(&:downcase.map do| word| string.downcase.scan(word) 结束。变平 如果str

我想在
ruby
中编写一个算法,如果句子可以删除,则返回
true
,如果不能删除,则返回
false

例如: 可以删除的字符串=
我的钥匙在哪里?
by=
我的

在这种情况下,不应删除
字符串
,因为
by
不是完整的句子

我的进步到现在
def deletable?(字符串,由:)
如果string.length==by.length,则返回false
arr=by.split.map(&:downcase.map do| word|
string.downcase.scan(word)
结束。变平
如果string.length>by.length
string.split.map(&:downcase).all?{| ele | arr.include?(ele)}
其他的
嗯,好吗?{ele | by.split.map(&:downcase.include?(ele)}
结束
结束
用法:

deletable?(“我的钥匙在哪里?”,通过:“我的钥匙在哪里”)
=>错误
以下是几个测试用例:

string\u可以被删除的字符串=`Where`
by=`芬兰在哪里`
=>正确
string\u that\u that\u can\u delete='howas my friend`\35;不是打字错误
by=`我的朋友怎么样了,只是问问而已`
=>正确
string\u可以被删除=`外面下雨了吗`
by=`里面在下雨吗`
=>错误
string\u可以被删除=`突尼斯很好`
by=`突尼斯很酷,但还行`
=>错误

在我当前的实现中,除了最后一个之外,一切都通过了。

看起来问题只需要去除所有非字母字符,然后检查
by
是否以
string
开头。此代码适用于所有测试用例

def deletable?(字符串,由:)
清除字符串。删除(“^a-zA-Z”)
清理方式=删除方式(“^a-zA-Z”)
清洁者。开始?(清洁者)
结束

额外好处:最好将所有字符都降格,这样比较就不区分大小写。

如何对每个字符进行比较。如数字、单词、标点符号等?您可以更改正则表达式,以仅删除应忽略的字符。如果您的要求是保留数字和标点符号,并且只删除空白,那么请使用
delete(“\s”)
这些引号并不是您认为的那样。它们是backticks,ruby要求windows或Linux或其他任何东西在它们内部执行任何操作。可能很危险。是的,只是在粘贴测试时输入了一个错误。