如何创建一种检查字符串是否以大写字母开头的方法?

到目前为止,我有:

def capitalized?(str)
  str[0] == str[0].upcase
end

这是问题所在,因为它为诸如true"12345""£$%^&"等的字符串返回"9ball"。我希望它仅在第一个字符时返回true是一个大写字母。

sja811024 回答:如何创建一种检查字符串是否以大写字母开头的方法?

如果第一个字符是介于match?A范围内的大写字母,则可以使用Z返回true:

def capitalized?(str)
  str.match?(/\A[A-Z]/)
end

p capitalized?("12345") # false
p capitalized?("fooo")  # false
p capitalized?("Fooo")  # true

您还可以将正则表达式传递给start_with?

p 'Foo'.start_with?(/[A-Z]/) # true
p 'foo'.start_with?(/[A-Z]/) # false
,

使用正则表达式可能有更好的方法,但是保持此红宝石为基础,您可以制作一个大写字母数组:

capital_letters = ("A".."Z")

然后,您可以检查您的第一个字母是否在该数组中:

def capitalized?(str)
  capital_letters = ("A".."Z")
  capital_letters.include?(str[0])
end

或更短:

def capitalized?(str)
  ("A".."Z").include?(str[0])
end
,

如果可能的话,我会避免使用字符范围,因为在不知道编码的情况下,您永远无法确定范围内的内容。在您的情况下,这是不必要的。一个简单的

/^[[:upper:]]/ =~ str

会的。有关POSIX字符类的定义,请参见here

,
def capitalized?(str)
  str[0] != str[0].downcase
end

capitalized? "Hello"           #=> true
capitalized? "hello"           #=> false
capitalized? "007,I presume"  #=> false
capitalized? "$100 for that?"  #=> false
本文链接:https://www.f2er.com/3146025.html

大家都在问