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

标签 ruby-on-rails ruby debugging syntax syntax-error

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

    相关文章:

    ruby-on-rails - 添加到收藏夹(多款)

    java - 奇怪的 Java 线程池行为 - 除非使用 Future,否则会丢失任务

    linux - 如何确保在 Linux 中使用 -g 编译程序或共享库

    ruby-on-rails - rails 4 + Postgres : Randomly cannot connect to development server

    css - Rails 4 背景图片 - 纯 CSS

    ruby-on-rails - 使用 Devise 身份验证和 Rails 登录后用户帖子丢失?

    这个的 ruby 快捷方式?

    ruby-on-rails - 避免 current_user 每次都点击数据库? ruby on Rails

    Ruby Array - 删除前 10 位数字

    javascript - 用于查找基本 Javascript 语法错误的命令行工具?