【问题标题】:Ruby substring explanation needed需要 Ruby 子字符串解释
【发布时间】:2015-11-06 02:20:23
【问题描述】:

我有两个字符串 str1 = 'abbab'str2 = 'ba'。如果我这样做了

str1.include? str2

我收到true。当我这样做时

str2.include? str1

为什么我会得到false

如果str2 位于2 位置,即str1[2..3] == str2,我应该如何找到str1 的子字符串?

【问题讨论】:

  • x.include? y 表示 x 是否包含 y。因此,如果 yx 的子字符串,x.include? y 将返回 truey.include? x 将返回 false,除非 x 也是 y 的子字符串,也就是 x == y。不知道混乱来自哪里。
  • @YuHao,更像是1 <= 2true,而2 <= 1false

标签: ruby string substring


【解决方案1】:

什么是子串?

一个字符串的子串是另一个出现"in"的字符串。

按照上述定义:

'ba' 出现在'abbab' 中,因此'ba''abbab' 的子字符串。

现在反过来看:

'abbab' 是否出现在 'ba' 内部?不,所以'abbab' 不是'ba' 的子字符串。

我应该如何找到str2 是否是str1 的子字符串?

通过做:

str1.include? str2 #true

如何找到str1str2 的子字符串?

str2.include? str1 #false
# since its not, you are getting false.

【讨论】:

  • 感谢您回答 shivam,但为什么 str2 不是 str1 的替代,当 str2 即 'ba' 存在于 str1 中,即位置 2-3 上的 'abbab' 时。?
  • 因为“一个字符串的子串是另一个出现在“in”的字符串。打个比方——“印度在亚洲?=> 真”,“亚洲在印度?=> 假”
  • 谢谢,知道了。我在想子字符串的一部分也应该返回 true,因为 abbab 确实有 ba,但由于 ba 也出现在 abbab 中,它应该双向返回 true。感谢您的澄清
  • Rails / ActiveSupport 提供了一个in? 方法:str2.in? str1 #=> true
【解决方案2】:

Read the documentation carefully:

include? other_str → true or false

如果 str 包含给定的字符串或字符,则返回 true

例子:

=> "foobar".include? "bar"
#> true
=> "bar".include? "foobar"     
#> false

【讨论】:

    猜你喜欢
    • 2017-01-13
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    相关资源
    最近更新 更多