给定一个像words = ["hello", ", ", "world", "!"]
这样的数组,我需要操作由字母组成的元素,所以我最后会得到一个字符串,例如"*hello*, *world*!"
我设法从数组中检索包含使用words.map.with_index { |element, index| index if element[[/a-zA-Z+/]] == element }.compact
的字母的索引,这些索引是[0, 2]
。
我如何在函数中使用这些索引,以便我可以操作单词?
答案 0 :(得分:2)
你不需要索引。如果您希望能够将任意逻辑应用于每个数组元素,请使用不带索引的map
:
words.map{|w| w.gsub(/[a-zA-Z]+/,'*\0*')}.join
正如其他人所指出的那样,对于你给出的例子,你根本不需要处理数组,只需先将它连接成一个字符串。例如:
words.join.gsub(/[a-zA-Z]+/,'*\0*')
答案 1 :(得分:0)
尝试使用Regexp,这将使您的工作变得轻松。您可以在数组
中获取元素后对其进行操作words = ["hello", ", ", "world", "!"]
array = []
words.each do |a|
array << a if /\w/.match(a)
end
puts array
hello
world
答案 2 :(得分:0)
words.reject { |word| word.match?(/\p{^L}/) }.
map { |word| "*%s*" % word }.
join(', ')
#=> "*hello*, *world*"