除非索引为零,否则我想将a
的值设置为等于找到的索引,在这种情况下,我要将其设置为减去该值的某个数字。我想知道是否可以在Ruby中执行此操作(取自python):
a='/-123456789X'.find(y)or 99-x
有人知道这样做的好方法吗?
答案 0 :(得分:2)
尝试这个。给定x
和y
a = "/-123456789X".index(y) || 99 - x
答案 1 :(得分:1)
在python中,string.find(other)
将返回index
中的other
或-1
,如果other
在string
中不存在。
在ruby中,string.index(other)
将返回index
中的other
或nil
,如果other
在string
中不存在。
“ Truthy”和“ Falsey”值:
ruby
承认nil
为“假”和0
为“真实”;但是python
承认0
为“假”,-1
为“真” 因此您当前的python代码具有3个可能的返回值:
为了在ruby中获得等效结果,您的代码应如下所示:
str = '/-123456789X'
a = if y.start_with?('/') && str.index(y)
99 - x
else
str.index(y) || -1
end
其他替代方法包括:
# Ruby >= 2.5 using `String#match?
str.match?(/\A#{y}/) ? 99 - x : str.index(y) || -1
也就是说,您的实际请求“除非该索引为零,否则我想将a
的值设置为等于找到的索引,在这种情况下,我要将其设置为某个数字减去该值“ 似乎有点不同,我不确定这是否意味着x
是“那个值”以及在这种情况下x
应该代表什么。
x
应该是开始索引吗? x
应该是结束索引吗?