gpt4 book ai didi

ruby-on-rails - 如何在Ruby中找到中间字符?

转载 作者:行者123 更新时间:2023-12-03 08:13:28 25 4
gpt4 key购买 nike

我正在尝试在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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com