簡體   English   中英

String.replace回調不起作用

[英]String.replace callback not working

我正在嘗試創建一個將bbcode轉換為html的類,但是replace不調用回調函數。

這就是我所擁有的

function bbcode(){
    this.bbcode_table = {};

    this.bbcode_table[/[asdf]/g] = function(match, contents, offset, input_string){
        return "hi";
    }
}

bbcode.prototype.toHTML = function(str){
    for (var key in this.bbcode_table){
        str = str.replace(key, this.bbcode_table[key]);
    }
    console.log(str); // asdf
}

var a = new bbcode;
a.toHTML("asdf");

上面的代碼不起作用,但是,下面的代碼運行良好。

text = "asdf";
text = text.replace(/[asdf]/g, function(match, contents, offset, input_string){
    return "hi";
});
console.log(text); // hihihihi

我究竟做錯了什么?

由於key已轉換為string ,因此功能replace不會捕獲與"/[asdf]/g"任何匹配項。

您可以對對象RegExp遵循這種方法

 function bbcode() { this.bbcode_table = {}; this.bbcode_table["[asdf]"] = { "cb": function(match, contents, offset, input_string) { return "hi"; }, "flag": "g" } } bbcode.prototype.toHTML = function(str) { for (var key in this.bbcode_table) { var regex = new RegExp(key, this.bbcode_table[key].flag); str = str.replace(regex, this.bbcode_table[key].cb); } console.log(str); } var a = new bbcode; a.toHTML("asdf"); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM