-1

除了注释行之外,一切似乎都运行良好:

#return false if not s[0].upcase =~ /AZ/

和第四次检查。

什么是正确的if陈述s[0]/AZ/比较?

def starts_with_consonant?(s)
   return false if s.length == 0
   #return false if not s[0].upcase =~ /AZ/
   n = "AEIOU"
   m = s[0]
   return true if not n.include? m.upcase
   false
 end

 puts starts_with_consonant?("Artyom") # false 1
 puts starts_with_consonant?("rtyom")  # true 2
 puts starts_with_consonant?("artyom") # false 3
 puts starts_with_consonant?("$rtyom") # false 4
 puts starts_with_consonant?("") # false 5
4

4 回答 4

1

尝试这个...

def starts_with_consonant? s
  /^[^aeiou\d\W]/i =~ s ? true : false
end
于 2016-06-14T05:01:57.580 回答
0

我也不确定你的正则表达式想要达到什么目的,所以我不能提出修复建议。但是对于整个方法,我会通过使用=== 运算符并使用选项使正则表达式不区分大小写来保持简单i

def starts_with_consonant?(s)
    /^[bcdfghjklmnpqrstvwxyz]/i === s
end
于 2013-10-07T01:26:48.003 回答
0

使用正则表达式很容易:

def starts_with_consonant?(s)
   !!(s =~  /^[bcdfghjklmnpqrstvwxyz]/i)
end

这将字符串的第一个字符与一组辅音匹配。!!强制输出为真/假。

于 2013-10-06T22:11:06.277 回答
-1

这也有效

    def starts_with_consonant? s
      return /^[^aeiou]/i === s
    end
于 2015-11-01T12:46:20.430 回答