本帖最后由 KB.Driver 于 2021-2-7 21:07 编辑
正则的规则其实很简单……掌握基本规则就能搞定一些简单的判断。
不过正式应用场合因为需要测试的缘故,直接找现成稳定的代码也是一种选择。
从已有的部分来看,楼主已经有了正则的基础,接下来就是经验的问题了。
工程实践方面,不推荐对原数据做破坏性修改。
也就是说,不要修改@name变量,但是你可以对name方法复制一份并进行修改,例如不读取井号以后的部分
alias ordinary_name name def name @processed_name ||= ((n = ordinary_name.index("#")) ? ordinary_name[0, n] : ordinary_name) end
alias ordinary_name name
def name
@processed_name ||= ((n = ordinary_name.index("#")) ? ordinary_name[0, n] : ordinary_name)
end
然后,既然一次要读3个数,可以压缩数据,提高数据浓度。
例如使用<tone:xx,xx,xx,xx>,当然最后一个数可以省略
这个可以这样读
map_name = @mapinfo[map_id].ordinary_name if map_name =~ /<tone:(-?\d+),(-?\d+),(-?\d+),?(-?\d+)?>/i r, g, b, a = Regexp.last_match.captures # a指代ash,勉强也算“灰” a ||= 0 # 灰度默认为0 # 色调操作 end
map_name = @mapinfo[map_id].ordinary_name
if map_name =~ /<tone:(-?\d+),(-?\d+),(-?\d+),?(-?\d+)?>/i
r, g, b, a = Regexp.last_match.captures # a指代ash,勉强也算“灰”
a ||= 0 # 灰度默认为0
# 色调操作
end
测试
|