我想获取具有重复字符的字符串的索引。但是,如果我有相同的字符,它使返回该字符第一次出现的指数获取红宝石中所有字符的索引
str = "sssaadd"
str.each_char do |char|
puts "index: #{str.index(char)}"
end
Output:-
index: 0
index: 0
index: 0
index: 3
index: 3
index: 5
index: 5
我想获取具有重复字符的字符串的索引。但是,如果我有相同的字符,它使返回该字符第一次出现的指数获取红宝石中所有字符的索引
str = "sssaadd"
str.each_char do |char|
puts "index: #{str.index(char)}"
end
Output:-
index: 0
index: 0
index: 0
index: 3
index: 3
index: 5
index: 5
使用Enumerator#with_index
:
str = "sssaadd"
str.each_char.with_index do |char, index|
puts "#{index}: #{char}"
end
是的,谢谢你的作品。 –
如果你想找到您还可以使用此
str = "sssaadd"
arr=str.split('')
arr.each_with_index do|char,index|
puts "index : #{index}"
end
重复子串的所有索引,你可以使用这个:
'sssaadd'.enum_for(:scan, /(.)\1/).map do |match|
[Regexp.last_match.begin(0), match.first]
end
# => [[0, "s"], [3, "a"], [5, "d"]]
在这里,我们scan
所有的字符串由正则表达式,它发现重复的字符。诀窍是scan
的块形式不会返回任何结果,因此为了使其返回块结果,我们将scan
转换为枚举数并在其后添加map
以获得所需的结果。
你是不是想总是得到所有字符加上最后的结果他们的索引位置?或者让一些更一般的东西(即一种方法告诉你字符串中第5'z'的位置,或者一个方法,如果传递一个字符串和一个字符,给你所有字符的索引位置)?它可能是值得展示一个想象的功能,返回你想要的。 。 。 –