【发布时间】:2021-01-30 14:02:42
【问题描述】:
我有一个由字符串组成的数组,其中的文本用逗号分隔。我需要返回一个布尔值,指示它是否为空,或者其他两个字符串中的一个或两个是否是数组元素中包含的唯一值。
text1 = John
text2 = Doe
array1['element'] = 'John, Doe' #true
array2['element'] = 'Bob, Buck' #false
array3['element'] = 'John, Buck' #false
array4['element'] = 'John' #true
array5['element'] = 'John, John' #true
array6['element'] = '' #true
我可以一次匹配一个或一个空元素,但我不确定如何确保仅包含我的匹配项而不包含其他文本。
foo = 'John,Doe,Buck'
if foo['John']
foo <= 'Set to Repeat'
elsif foo['Doe']
foo <= 'Set to Repeat'
elsif foo['John,Doe']
foo <= 'Set to Repeat'
elsif foo['']
foo <= 'Set to Repeat'
else foo
end
使用此代码我得到一个匹配项,但由于存在“Buck”,我需要拒绝它。
【问题讨论】:
-
你真的应该发布你到目前为止所拥有的代码,以获得真正的帮助。此外,请发布示例,说明您如何没有得到您期望/想要的。
-
添加了一个粗略的示例代码sn-p
-
我不明白你为什么要比较
foo和'Set to Repeat'。foo[some_string]语法仅用于检查是否存在确切的子字符串,因此它不是正确的操作(您必须检查所有可能的排序!)。研究迭代、String.split、数组运算符-和&以及集合和集合操作等概念。 -
<=应该是什么?你的意思是“添加到数组”?其中很多看起来像 Ruby 风格的伪代码,实际上并没有什么帮助。尝试输入实际代码。 -
你的问题出在前两行:
John和Doe这两个常量是未定义的,所以你会得到一个NameError异常。
标签: arrays ruby string string-matching