1

只有当字符串包含整个单词时,Ruby 中才会返回 true,在这种情况下'hello'

include?如果单词中仅存在某些字符,我不希望其行为返回 true:

'hello whats up'.include? 'll'
=> true
4

5 回答 5

7
> 'hownowbrowncow'['now']    => "now" # will be nil if not found

如果你希望它需要单词边界......

'hownowbrowncow'[/\bnow\b/]  => nil 

它返回 true 还是 false 并不重要,因为除了nilor之外的任何东西都false将满足条件测试。如果您真的喜欢真假,那么您可以通过多种方式将任意表达式转换为真或假,其中一种方法是:

'now'.nil?  => false
!'now'.nil? => true
于 2013-08-10T16:23:15.163 回答
3

正如其他人给出的那样,有很多好方法可以做到这一点。这是另一种方式:

my_string.scan(/\w+/).include? "hello"

这将是一个区分大小写的检查。对于不区分大小写:

my_string.scan(/\w+/).map(&:downcase).include? "hello"

这也适用于“hello”的变量:

m_string.scan(/\w+/).map(&:downcase).include? my_word
于 2013-08-10T16:28:09.310 回答
2
str = "Hello guys, how are you?'"
keyword = "hello"
print str.split.map  { |word| word.downcase }.include? keyword.downcase
于 2013-08-10T16:27:44.920 回答
1

如果你只指字母表,那么你可以

(! 'Wr4ngle'.gsub(/[A-Za-z]/, '').blank?)

该 grep 应该足以满足您的需求

于 2013-08-10T16:22:58.180 回答
1

听起来你要求简单地做:

"hello" == "hello"

如果您不希望匹配区分大小写,可以使用:

"HeLlO".downcase == "hElLo".downcase

如果您要查看一个字符串是否包含另一个字符串,您可以执行以下操作:

s1 = "hello"
s2 = "oelhl"

s1.split("").sort == s2.split("").sort #=> case sensitive
s1.downcase.split("").sort == s2.downcase.split("").sort #=> not case sensitive
于 2013-08-10T16:23:15.993 回答