要使用索引返回子字符串,我们可以这样做
string = "hello"
string[0] returns "h"
string[1] returns "e"
(and so on...)
假设我有一个数组[1,2,3,4]和一个字符串“awesome”。我如何从数组中返回相关的子字符串?
[1,2,3,4] should return "weso"
这是因为我有一个方法,它意味着在每个“r”之后返回子字符串并且它失败了:
您可以看到我找到了每个子字符串“r”的索引,并将其作为数组返回。下面的行将数组中的每个值递增+1。
我现在需要通过数组中的相关索引从字符串返回子串。
def pirates_say_arrrrrrrrr(string)
all_index = (0 ... string.length).find_all {|i| string[i] == "r"}
y = all_index.map do |i| i + 1
end
string[y.first..y.last]
end
# pirates_say_arrrrrrrrr("are you really learning Ruby?") # => "eenu"
# pirates_say_arrrrrrrrr("Katy Perry is on the radio!") # => "rya"
答案 0 :(得分:5)
array = [1,2,3,4,6]
"awesome".chars.values_at(*array).join
#=> "wesoe"
答案 1 :(得分:1)
[1, 2, 3, 4].each_with_object(""){|i, s| s << "awesome"[i]}
# => "weso"
答案 2 :(得分:0)
对于连续的子字符串,请不要忘记您可以对字符串进行切片:
> "awesome"[1..4]
=> "weso"
要在比赛结束后返回角色,请不要忘记你可以使用正则表达式:
> "Katy Perry is on the radio!".scan(/(?<=r)./)
=> ["r", "y", "a"]