类替换格式

时间:2016-06-22 15:50:29

标签: javascript c# jquery replace

我有一个查询,我填充菜单和过滤项目,以便有我的代码

function completeGalleryCat(data, target, eng) {
var items = data.d.results;
var prefix = "";
var sufix = "<div class='clear'></div>";
if (eng)
    prefix = "<div class='filter selected' data-category='cat-all'>All</div>";
else
    prefix = "<div class='filter selected' data-category='cat-all'>Todas</div>";
var menu = "";
var cat = "";
for (var item in items) {
    if (eng)
        cat = items[item].English;
    else
        cat = items[item].Title;
    menu += "<div class='filter' data-category='" + cat.replace(" ", "_").replace(/[^\w\s]/gi, '') +"'>"+ cat +"</div>";
   }
$(target).html(prefix + menu + sufix);
}

所以,正如你所看到的,我用下划线替换空格,如:

 menu += "<div class='filter' data-category='" + cat.replace(" ", "_").replace(/[^\w\s]/gi, '') +"'>"+ cat +"</div>";

问题在于我有3个短语,如

<div class="filter" data-category="Transporting_of Materials">Transporte de Materiales</div>

正如您所见,data-category="Transporting_of Materials"

中缺少下划线

提前谢谢

2 个答案:

答案 0 :(得分:3)

在第一次替换调用中全局替换带下划线的空格。

&#13;
&#13;
var title = 'Transporting of Materials';
console.log(title.replace(/\s/g, "_").replace(/[^\w\s]/gi, ''));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您需要使用正则表达式来实现这一目标。在JS中,replace()函数仅适用于出现。

所以你的代码将如下所示。

menu += "<div class='filter' data-category='" + cat.replaceAll(" ", "_").replace(/[^\w\s]/gi, '') +"'>"+ cat +"</div>";

String.prototype.replaceAll = function(search, replacement) {
    var target = this;
    return target.replace(new RegExp(search, 'g'), replacement);
};

您还可以在以下任务中找到更多信息。 How to replace all occurrences of a string in JavaScript?