我有一个“award.x_initial value.currency”格式的字符串,我想对除前导“x_”之外的所有内容进行骆驼化,以便得到“award.x_initialvalue.currency”格式的结果。
我目前的做法是:
a = "award.x_initial_value.currency".split(".")
b = a.map{|s| s.slice!("x_")}
a.map!{|s| s.camelize(:lower)}
a.zip(b).map!{|x, y| x.prepend(y.to_s)}
我不太满意它,因为它既不快也不优雅,性能是关键,因为这将应用于大量数据。
我也搜索了一下,但什么也找不到。
有没有更快/更好的方法来实现这个目标?
最佳答案
由于“性能是关键”,您可以跳过ActiveSupport::Inflector
的开销,使用正则表达式自己执行“camelization”:
a = "award.x_initial_value.currency"
a.gsub(/(?<!\bx)_(\w)/) { $1.capitalize }
#=> "award.x_initialValue.currency"
关于ruby-on-rails - 仅将修改应用于Ruby中的子字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35039601/