【问题标题】:How to check whether a string includes a given string variable?如何检查字符串是否包含给定的字符串变量?
【发布时间】:2018-06-14 07:09:59
【问题描述】:

我正在编写一个方法来检查一个数字是否包含给定范围内的数字。

我得到了两个给定索引之间的字符串形式的数字。我现在只需要检查它是否包含给定的数字。

当传递给方法时假设 digit 是一个整数 为什么digit.to_s 然后number.include?(digit) 不起作用?

谢谢

【问题讨论】:

  • 您可以将您的代码 sn-p 粘贴到您尝试过的内容中吗?如果您调用digit.to_s,然后将digit 传递给include? 方法,则它不起作用,因为to_s 不会改变原始数字(您必须将结果保存到变量中,或者直接调用digit.to_s作为include?的参数)。
  • 最好提供minimal reproducible example。您也会收到有关您的范围检查方法的反馈。
  • to_s 不会修改接收者。
  • 什么样的“范围”?位数范围?数字范围?你能提供一个完整的例子吗?
  • 什么是“索引”?

标签: ruby string variables include


【解决方案1】:

你应该试试这个

number.include?(digit.to_s)

您没有将数字转换为字符串。

希望这能解决您的问题。

【讨论】:

  • 非常感谢!我就知道会是这样的傻事!
【解决方案2】:

您不需要对字符串进行任何转换。

这是一个没有的方法:

def digits_in_range(int, range)
  int.digits & range.to_a
end

这使用集合交集 (&) 来确定是否有任何数字落在该范围内。它返回交集:

digits_in_range(12345, 4..9) #=> [4, 5]

如果你只想要一个布尔值 truefalse

digits_in_range(12345, 5..9).any? #=> true
digits_in_range(32645, 7..9).any? #=> false

【讨论】:

  • 请注意,digits 方法是在 Ruby 2.4 中引入的
【解决方案3】:

检查给定范围(例如 0..2)内的字符串数字 '2343434' 是否包含数字 2

'2343434'[0..2].match?(/#{2}/) #=> true

假设您要传入一个数字,因此是插值(或者您可以改用 to_s)。

【讨论】:

  • 您对 OP 使用“范围”做出了不同但同样有效的假设。
猜你喜欢
  • 2018-05-23
  • 2011-06-03
  • 2014-01-08
  • 1970-01-01
  • 2017-09-23
  • 2016-10-03
  • 2011-11-09
  • 2013-05-18
  • 1970-01-01
相关资源
最近更新 更多