支票号码包括红宝石中的其他号码



如何检查数字是否包含红宝石中的其他数字?

例:

number1 = 1321
number2 = 2

如何检查数字 1 是否包含数字 2?

1321 contains 2 is true

你可以做这样的事情来返回 true 或 false

number1.to_s.include?(number2.to_s)

这是一个字符串问题,而不是数字问题。数字不包含其他数字。您需要将两者转换为字符串:

s1 = 1321.to_s # => "1321"
s2 = 2.to_s # => "2"

然后,只需使用 []

s1[s2] # => "2"
如果找到索引值,

这将返回索引值,或者nil

s1["9"] # => nil

另一种方法是将数字转换为字符串,并使用 String#include?检查主字符串中是否存在子字符串:

number1 = 1321
number2 = 2
sn1 = number1.to_s
# => "1321"
sn2 = number2.to_s
# => "2"
"#{sn1} contains #{sn2} is #{sn1.include?(sn2)}"
# => "1321 contains 2 is true"

错误案例示例:

number1 = 1321
number2 = 9
sn1 = number1.to_s
# => "1321"
sn2 = number2.to_s
# => "9"
"#{sn1} contains #{sn2} is #{sn1.include?(sn2)}"
# => "1321 contains 9 is false" 

>@meagar,它可以被视为一个数字问题(有点):

def number_in_number?(outer, inner)
  test = 10**((inner < 2) ? 1 : Math.log10(inner).ceil.to_i)
  while outer >= inner
    return true if ((outer - inner) % test).zero?
    outer /= 10
  end
  false
end
number_in_number?(1321, 2)         #=> true 
number_in_number?(1321, 32)        #=> true 
number_in_number?(1321, 4)         #=> false
number_in_number?(1321, 1321)      #=> true 
number_in_number?(1321, 13211)     #=> false  
number_in_number?(543681321, 4368) #=> true 
number_in_number?(543681321, 4367) #=> false 

最新更新