Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby在or运算符中有2个以上可选项_Ruby - Fatal编程技术网

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的英语语言更正;