ruby在or运算符中有2个以上可选项
我有一行代码:ruby在or运算符中有2个以上可选项,ruby,Ruby,我有一行代码: if self.include?("van " || "de " || "von ") 当or运算符的第三个选项为true时,为什么此行后面包含的块不执行 当我的字符串是vonWartburg时,块不会执行,但当我的字符串包含van或de时,它会执行 self.include?("van " || "de " || "von ") 将始终评估为 self.include?("van ") 为什么??因为| |的工作方式 请参阅-它接受子字符串和偏移量作为参数 您需要的是以下
if self.include?("van " || "de " || "von ")
当or运算符的第三个选项为true时,为什么此行后面包含的块不执行
当我的字符串是vonWartburg时,块不会执行,但当我的字符串包含van或de时,它会执行
self.include?("van " || "de " || "von ")
将始终评估为
self.include?("van ")
为什么??因为| |的工作方式
请参阅-它接受子字符串和偏移量作为参数
您需要的是以下内容:
["van ", "de ", "von "].any? { |substring| self.include?(substring) }
将始终评估为
self.include?("van ")
为什么??因为| |的工作方式
请参阅-它接受子字符串和偏移量作为参数
您需要的是以下内容:
["van ", "de ", "von "].any? { |substring| self.include?(substring) }
我想你想要的是
if self.include?("van ") || self.include?("de ") || self.include?("von ")
将| |包含在通话中?使其仅计算第一个字符串。你想测试包括吗?每种情况。我想你想要的是
if self.include?("van ") || self.include?("de ") || self.include?("von ")
将| |包含在通话中?使其仅计算第一个字符串。你想测试包括吗?对于每种情况。or将始终对van进行评估 尝试使用以下正则表达式:
self =~ /^(van\ |de\ |von\ )/
“or”将始终评估van 尝试使用以下正则表达式:
self =~ /^(van\ |de\ |von\ )/
这对德也不起作用
2.3.0 :004 > "van test".include?("van " || "de " || "von ")
=> true
2.3.0 :005 > "de test".include?("van " || "de " || "von ")
=> false
2.3.0 :006 > "von test".include?("van " || "de " || "von ")
=> false
当您运行Stringinclude?van | de | von时
只向函数传递一个参数:van | de | von
布尔或| |将返回列表中计算结果为true的第一个元素。所以这与Stringinclude?van完全相同
我只知道两种方法来完成您在一行中试图完成的任务:
您可以创建一个子字符串表来测试和使用任何?越过它
[van,de,von]有吗?{| s | string.include?s}
或者,您可以使用一个正则表达式,其中Or运算符|完全按照您的要求执行
/范德冯/=~string
这对德也不起作用
2.3.0 :004 > "van test".include?("van " || "de " || "von ")
=> true
2.3.0 :005 > "de test".include?("van " || "de " || "von ")
=> false
2.3.0 :006 > "von test".include?("van " || "de " || "von ")
=> false
当您运行Stringinclude?van | de | von时
只向函数传递一个参数:van | de | von
布尔或| |将返回列表中计算结果为true的第一个元素。所以这与Stringinclude?van完全相同
我只知道两种方法来完成您在一行中试图完成的任务:
您可以创建一个子字符串表来测试和使用任何?越过它
[van,de,von]有吗?{| s | string.include?s}
或者,您可以使用一个正则表达式,其中Or运算符|完全按照您的要求执行
/范德冯/=~string
或者“de”那么它就有了-不。它只适用于vanthanks的英语语言更正;或者“de”那么它就有了-不。它只适用于vanthanks的英语语言更正;