我正在研究一個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