我正在尝试在Ruby中编写一个方法:
我把这段代码放在一起,但是不起作用:
def the_middle(s)
if s.length % 2 == 0
return s.index(string.length/2-1) && s.index(string.length/2)
else
return s.index(string.length/2).round
end
end
我认为问题出在语法上,而不是逻辑上,我希望有人能够确定语法错误可能在哪里。
非常感谢您的帮助!
最佳答案
实际上,该代码中同时存在语法错误和逻辑(语义)错误。
首先,您似乎误解了字符串上index
方法的工作方式。它不会返回给定索引处的字符,而是返回给定子字符串或正则表达式的索引,如documentation所示:
Returns the index of the first occurrence of the given substring or pattern (regexp) in str.
当字符串长度为偶数时,您还会使用错误的运算符来连接两个中间字符。
&&
是逻辑和运算符。通常用于条件而不是赋值-例如,在if语句if s.length.even? && s.length > 2
中。您要使用的运算符是+
,可将字符串连接在一起。最后,您使用的是
string.length
,但是string
并未在任何地方定义。您的意思可能是s.length
(输入参数)。正确的解决方案将更像以下内容:
def the_middle(s)
if s.length.even?
return s[s.length/2-1] + s[s.length/2]
else
return s[s.length/2]
end
end
我已经自由地将
s.length % 2 == 0
替换为s.length.even?
,因为它的目的更多是揭示含义,并且是发现整数是偶数还是奇数的 ruby 方法。
关于ruby-on-rails - 如何在Ruby中找到中间字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34711930/