2013-02-28 33 views
3

是否有可能借此:Lua的字符串模式 - 短代码

a=[[do end workspace.Part["Child 1"].Object.child2["thing"]remove() do end]] 
a=a:gsub("%.%a+","{F}%0{F}") 
a=a:gsub('(%[%s*([\'"]?).*%2%s*%]):remove%(%)','{F}%1{F}:remove()') 
a=a:gsub('{F}%s*{F}','') 
a=a:gsub('{F}.-{F}','filterremove(%0)') 

Output: do end filterremove(Workspace.Part["Child 1"].Object.child2["thing"]) do end 

,并且只使用一个GSUB有相同的结果,而不是两个? 无论xy的组合的,X [Y],[X] [Y]等

+2

提供示例输入和输出字符串? – hjpotter92 2013-02-28 13:42:22

+0

输入:workspace.Part [“Child”]:remove(),输出:filterremove(workspace.Part [“Child”]) – Waffle 2013-02-28 15:20:19

+0

'a = a:gsub(“(。*)%:remove%(%)” ,“filterremove(%1)”)'< - 很好。 – hjpotter92 2013-02-28 15:25:14

回答

1

a:gsub("(%S*%b[]):remove%(%)", "filterremove(%1)")

+1

workspace [“名称中有空格的对象”]:remove() – Waffle 2013-02-28 16:18:43

+0

我知道,但是您需要指定一个您希望看到的示例。或者几个例子。只要有人提出满足它们的实现,就会得到你所需要的。 – 2013-02-28 16:24:32

+0

更新了我对空间工作的回答...... – 2013-02-28 16:27:21

1

可以至少链和线路把它包装:

a = [[do end workspace.Part["Child 1"]:remove() do end]] 
a = a:gsub("%.%a+","{F}%0{F}") 
    :gsub('(%[%s*([\'"]?).*%2%s*%]):remove%(%)','{F}%1{F}:remove()') 
    :gsub('{F}%s*{F}','') 
    :gsub('{F}.-{F}','filterremove(%0)') 

真尽管如此,这绝不会奏效。如何:

workspace.remove(x) 
workspace["remove"](x) 
getfenv()["work" .. "space"]["re".."move"](x) 
+1

以及空间:工作空间。部分[“...”]:remove()'; OP需要做出至少一些假设... – 2013-02-28 17:29:43

+0

@Paul:我不认为OP可以承担任何假设,因为他们几乎肯定会尝试对未知代码进行沙盒。 – Eric 2013-02-28 17:31:28

+0

我并不知道,但如果是这种情况,这些尝试是徒劳的。 – 2013-02-28 17:55:04