我有一系列自定义对象。这些对象有一个名为name的参数,它是两个字符串的串联,两个字符串之间有一个分隔符。例如:名字可能是Some @ Data,其中' Some'是第一个字符串和'数据'是另一个,@是分隔符。
我的目的是更新数组中所有对象的name参数,以便param只有' Data' (即删除' Some @')并在更新后将对象存储在另一个数组中。以下是代码:
final_array = array1.select do |object|
object.name = object.name.match(/@(.*?)$/)
end
当我打印object.name.match(/@(.*?)$/)
时,这会将输出显示为:
#<MatchData "@Data" 1:"Data">
在此输出中,我如何获得&#34;数据&#34;来自这个MatchData。我试过了object.name.match(/@(.*?)$/)[1]
,但它没有用。或者我需要更改我的正则表达式吗?
答案 0 :(得分:1)
我会使用#each和#gsub方法:
array.each do |object|
object.name = object.name.gsub(/^.+@/, '')
end