鍍金池/ 問答/人工智能  Java  C++  HTML/ 字符串模板與變量提取

字符串模板與變量提取

現(xiàn)給定一個原始字符串,例子: abcdefgh ,一個模板規(guī)則,例子: ab{{}}de{{}}h

其中 {{}} 代表任意匹配,且一個模板內(nèi)可能存在0個或多個{{}},要求編寫一個函數(shù)先進行模板匹配, 如果符合原始字符串符合模板規(guī)則,則進行變量提取,例子的結(jié)果為 ["c", fg"]的數(shù)組

function (str string, temp string) (bool, []string) {
    // 先判斷 str是否符合temp的規(guī)則,不符合則返回false
    // 比如 abcdefgh 就滿足 ab{{}}de{{}}h,但是 abcdefghi 就不滿足ab{{}}de{{}}h,因為多了個字符i
    
    // 如果符合則進行變量提取
}

我想了下,可以用正則,也可以用字符的split,對于一個變量符號都是很好解決的,但是對于多個變量符號,全文匹配就會失敗,特前來請教

回答
編輯回答
嘟尛嘴

其實也簡單,將你的自定義模板在方法內(nèi)轉(zhuǎn)換為等價的正則表達式,然后再匹配不就可以了。

2018年1月16日 05:08
編輯回答
情殺
function tempMatch(str, temp) {
    temp = "^" + temp.replace(/{{}}/g, "(.+?)") + "$";
    let matchs = str.match(temp), result = [];
    for (let i = 1; i< matchs.length; i ++) {
        result.push(matchs[i]);
    }
    return result;
}
2017年5月31日 01:38