在javascript中使用substring切割和重建字符串

Cutting out and re-constructing string in javascript with substring

本文关键字:重建 字符串 substring javascript      更新时间:2023-09-26

我正在努力与逻辑…假设我有这样一个字符串:

var s = '<span>foo bar</span><img src="www.foo.bar"><img src="www.blah.blah">
<span>blah blah blah</span>';

我想做的是剪掉每个图像的源并重建没有图像源的"s"字符串。这是我到目前为止所做的,但它是错误的…

numImgs = s.match(/<img/gi).length;
    if (numImgs > 0) {
        var imgSrc, startSrc = 0, endSrc = 0;
        for (var i = 0; i < numImgs; i++) {
            (function() {
                startSrc = s.indexOf('<img src="', endSrc);
                endSrc = s.indexOf('"', startSrc + 10);
                imgSrc = s.substring(startSrc+10, endSrc);
                s = s.substring(0, startSrc+10) + s.substring(endSrc, s.length);
                console.log("start: " + startSrc + " end: " + endSrc + "'n" + s);
            })(i);
        }
    }

我明白我不能使用s.indexOf('<img src="', endSrc)作为开始,因为第二次"s"字符串已经改变,endSrc是方式。我怎样才能达到我在这里要做的,得到第二个,第三个,第四个img ?

结果将是:

var s = '<span>foo bar</span><img src=""><img src=""><span>blah blah blah</span>';

解决方案:这可能是一种非常肮脏的方式,但对于我所拥有的,我添加了startSrc = s.indexOf('<img src="data');,所以它会发现src的第一次出现不是空的。

var s = '<span>foo bar</span><img src="www.foo.bar"><img src="www.blah.blah"><span>blah blah blah</span>';
var srcArray = [];
var result = s.match(/(<img).+?(>)/gi);
for(var i = 0; i < result.length; i++){
    var src = result[i].match(/src='"(.+?)'"/);
    srcArray.push(src[1]);    
}
s = s.replace(/(<img).+?(>)/gi,'<img src=""/>');
console.log(srcArray, s); //["www.foo.bar", "www.blah.blah"] "<span>foo bar</span><img src=""/><img src=""/><span>blah blah blah</span>"