T
timr
In ruby you can use string#index as follows:
str = "some text"
str.index(/t/)
=>5
But what if I want to get all the indices for a regex in the string?
Is there an string#all_indices method?
I wrote the following, which works, but there must be a more elegant
way:
class String
def all_indices(regex)
indices = []
index = 0
while index && index < self.length #index will be nil upon first
match failure, otherwise quit loop when index is equal to string
length
index = self.index(regex, index)
if index.is_a? Numeric #avoids getting a nil into the indices
array
indices << index
index +=1
end
end
indices
end
end
p "this is a test string for the ts in the worldt".all_indices(/t/)
p "what is up with all the twitter hype".all_indices(/w/)
# >> [0, 10, 13, 16, 26, 30, 36, 45]
# >> [0, 11, 25]
str = "some text"
str.index(/t/)
=>5
But what if I want to get all the indices for a regex in the string?
Is there an string#all_indices method?
I wrote the following, which works, but there must be a more elegant
way:
class String
def all_indices(regex)
indices = []
index = 0
while index && index < self.length #index will be nil upon first
match failure, otherwise quit loop when index is equal to string
length
index = self.index(regex, index)
if index.is_a? Numeric #avoids getting a nil into the indices
array
indices << index
index +=1
end
end
indices
end
end
p "this is a test string for the ts in the worldt".all_indices(/t/)
p "what is up with all the twitter hype".all_indices(/w/)
# >> [0, 10, 13, 16, 26, 30, 36, 45]
# >> [0, 11, 25]