说我有"object.property.property"
之类的字符串,我希望能够使用这些字符串为这些属性动态创建表单字段;我需要将它们转换为"object[property][property]"
。
我尝试的是:"object.property.property".split('.')
当然,我有一个数组:["object", "property", "property"]
但我不确定如何重新加入它们,因此属性被括号("object[property][property]"
)包围。我尝试使用join
,但据我所知,只允许您指定数组中每个元素之间的分隔符。
任何想法都赞赏。
答案 0 :(得分:3)
这是一个选项
Error C1189 #error: include 'stdafx.h' before including this file for PCH
答案 1 :(得分:2)
"object.property.property".gsub('.', '][').sub('][', '[') << ']'
或者,效率较低,但更具可读性:
arr = "object.property.property".split('.')
[arr.shift, *arr.map { |e| "[#{e}]" }].join
答案 2 :(得分:2)
obj, *props = "object.property.property".split('.')
obj #=> "object"
props #=> ["property", "property"]
"#{obj}[#{props.join('][')}]"
#=> "object[property][property]"
更新:还包括没有属性的对象:
def form_name(property)
obj, *props = property.split('.')
"#{obj}[#{props.join('][')}]"
props.any? ? "#{obj}[#{props.join('][')}]" : obj
end
form_name "object.property.property"
#=> "object[property][property]"
form_name "object"
#=> "object"
答案 3 :(得分:0)
我会建议:
"object.property.property".gsub(/\.([\w\d_]+[^\.])/, "[#{$1}]")
虽然只有了解Regular Expressions
的人才能阅读。