我正在研究一个HTML5/JavaScript游戏引擎,并且我已经开始遇到过去从未出现过的情景,弄清楚我可以如何解决这个问题。通过不包含在括号内的冒号来分割字符串()
简而言之,我想通过一个字符将字符串拆分成一个数组 - 只要该字符不在括号内。
基本上,在物品/瓷砖之类的XML文件中,我存储了“触发器”,它们是为代码执行的操作提供规则的语句。单个触发器的不同参数用冒号(:)分开,并且可以为一个项目放置多个触发器,每个触发器都用逗号分隔。这里有一个例子:
<response trigger="npc:self:dialog:1:3">No, thank you.</response>
(这基本上是说:如果选择了这种反应,让谁问最初的问题循环到特定转换的特定邮件的NPC)
一起运动:我已经开始需要能够将回调触发器封装在具有某些触发器的参数括号内。这里有一个例子:
<response trigger="shop:open:1:(npc:self:dialog:1:4)">Yes, please.</response>
(这基本上是说:打开一个特定的商店,当商店被关闭,跳转到一个特定的会话/消息讲NPC)
的想法是,当商店关闭时,我可以调用该触发器的第四个参数(这本身就是一个触发器)。我相信你已经猜到了,这里的问题是,如果我根据“:”分割初始触发字符串,那么它会将回调触发器分解为主触发器的其他(杂乱)参数。我不想那样。另外,我也不想做任何事情,例如将其他角色分割为次级触发器(稍后出于生成原因,因为我想有些时候我会想在更深层次上嵌套大量触发器,而且我不想使用不同的字符我知道的解决方法,但我想学习正确的方式来分割一个字符,不包含在其他特定字符中
因为我用括号封装了回调参数,必须有一个干净的正则表达式我可以使用所有冒号内部没有括号分裂的主要触发字符串。
可悲的是,我一直没能拿出合适的表情来完成这件事。
任何想法?
我非常感谢你们的任何帮助。 :)
确定是否可以使用正则表达式分析的关键问题:括号可以嵌套吗? – cobbal 2011-04-23 18:12:19
@cobbal:我会说是,引用“我想有些时候我会想在更深层次上嵌套大量的触发器”。 – 2011-04-23 18:31:34
@ChristianSemrau啊,我似乎错过了那一点。 – cobbal 2011-04-23 18:38:33