当字符串包含任何字母A-Z或a-z时,如何返回true或false?

时间:2016-09-22 16:50:00

标签: ruby

我熟悉如何检查字符串是否包含子字符串,并且熟悉如何检查单个字母是数字还是字母,但我如何检查字符串是否包含任何字母?

def letters?(string)
  # what do i do here?
end

# string could be anything from '111' to '1A2' to 'AB2589A5' etc...

string = '1A2C35'
if letters?(string) == true
  # do something if string has letters
else
  # do something else if it doesnt
end

4 个答案:

答案 0 :(得分:4)

检查字符串是否包含任何字母的正确方法是使用\p{L}匹配器。那样你就匹配

"ï" # in "naĩve"

以及

"ç" # in Barça

代码如下:

def letters? string
  !string[/\p{L}/].nil?
end

答案 1 :(得分:3)

我想,你可以尝试类似的东西:

def letters?(string)
   string.chars.any? { |char| ('a'..'z').include? char.downcase }
end

如果你不想使用正则表达式。如果字符串中有任何字母,则此方法返回true

> letters? 'asd'
 => true 
> letters? 'asd123'
 => true 
> letters? '123'
 => false 

答案 2 :(得分:1)

此代码检查是否有任何字母从A到Z,大写和小写使用正则表达式。如果是,则返回true,否则返回false。这个语法是一个简单的if else语句。

def letters?
    self.match(/[A-Za-z]/) ? true : false
end

答案 3 :(得分:-2)

  def letters?(string)
    if (string =~ /[A-Za-z]/).to_s.length > 0
      return true
    else
      return false
    end
  end