在Ruby中,我可以检查字符串是否包含不使用正则表达式的字母吗?

6 ruby string ruby-on-rails include

我正在使用Rails 5.我想知道一个变量(你可以假设是一个字符串)是否包含至少一个字母(大写或小写).但是,我不想使用正则表达式(我注意到如果编码不是UTF-8,则常规表达式倾向于崩溃).所以我想知道如何检查一个字符串是否至少有一个字母.

这不起作用

input.downcase.include?("abcdefghijklmnopqrstuvwxyz")
Run Code Online (Sandbox Code Playgroud)

aku*_*uhn 10

试试这个

str.count("a-zA-Z") > 0
Run Code Online (Sandbox Code Playgroud)

count 函数接受字符集作为参数.

ArgumentError: invalid byte sequence in UTF-8尽管如此,这可能仍会失败.如果您的输入无效,则可能无法修复编码.

NB,这会扫描整个字符串,但也是如此downcase.对于性能基准测试,请参阅Eric的答案,在最坏情况和最佳情况之间,性能差异很大.与往常一样,可读性在过早优化之前出现.

  • 它确实有一个缺点,就是计算一个可能很大的字符串中的所有字母,只是为了检查是否至少有1个. (2认同)