Вы можете использовать метод Ссылка на элемент строки , который []
Внутри []
может быть литеральная подстрока, индекс или регулярное выражение:
> s='abcdefg'
=> "abcdefg"
> s['a']
=> "a"
> s['z']
=> nil
Поскольку nil
функционально совпадает с false
и любая подстрока, возвращаемая из []
, равна true
, вы можете использовать логику, как если бы вы использовали метод .include?
:
0> if s[sub_s]
1> puts "\"#{s}\" has \"#{sub_s}\""
1> else
1* puts "\"#{s}\" does not have \"#{sub_s}\""
1> end
"abcdefg" has "abc"
0> if s[sub_s]
1> puts "\"#{s}\" has \"#{sub_s}\""
1> else
1* puts "\"#{s}\" does not have \"#{sub_s}\""
1> end
"abcdefg" does not have "xyz"
Просто убедитесь, что вы не путаете индекс с подстрокой:
> '123456790'[8] # integer is eighth element, or '0'
=> "0" # would test as 'true' in Ruby
> '123456790'['8']
=> nil # correct
Вы также можете использовать регулярное выражение:
> s[/A/i]
=> "a"
> s[/A/]
=> nil