2012-11-09 62 views
1

我正在使用node.js表示Node.js字符串上的異步替換

我有類似於下面的字符串:

Here is my string but now I need to processString("mystring") 
and return the processString("data"). 

我要搜索processString的所有事件,並用函數的結果替換它。我需要運行的功能是異步的。是否有捷徑可尋?

謝謝!

+0

好吧,所以這就是我想我應該做的。讓我知道如果你認爲這是正確的方式或更好: 1.做一個正則表達式匹配processString 2. async.forEach結果 3.做一個字符串替換正則表達式與processString結果 這是否這樣做似乎是對的? – Christie

回答

2

你的問題不是很清楚,在回答你的問題時,「爲什麼」和「是什麼」可能會更有幫助。據我瞭解,你想與****更換processString("****")在這種情況下,你可以使用以下命令:

var str = 'Here is my string but now I need to processString("mystring") and return the processString("data").' 
    str = str.replace(/processString\(\".*?\"\)/gi, function(match){ 
     return match.replace("processString\(\"", "").replace("\"\)", "") 
    }) 
    console.log(str); 

這將匹配processString("****")內的內容,希望這就是你要找的人!

+0

對不起,我試圖找出如何儘可能清楚,方法的參數需要由一個函數(processString)處理,並且它查詢數據庫。由於參數來自用戶,可以是任何東西,我無法避免數據庫調用。所以,被調用的函數必須是異步的。那有意義嗎? – Christie

+0

我想我理解這個問題,但是這個問題的答案會有幫助。有了這個理解,我可以使用非阻塞的.replace(),所以你可以通過回調傳遞你需要的任何參數,我認爲這將是迭代字符串中項目的最好方法。您還可以通過構建查詢索引(收集所有參數),執行一個查詢,然後相應地替換每個結果來避免多個查詢。 – Sdedelbrock

+0

我還沒有任何代碼,因爲我試圖找出它的最佳工作方式。如果我使用替換,是否有辦法知道它何時完成,以便我可以調用函數的回調函數? – Christie