javascript - 使用子字符串在javascript中剪切并重新构造字符串

标签 javascript string substring

我正在努力解决逻辑...假设我有这个字符串:

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>"

关于javascript - 使用子字符串在javascript中剪切并重新构造字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30305140/

相关文章:

java - 如何在函数上动态写入逗号字符(作为参数)?

csv - Logstash-CSV列中的子字符串

java - 将两个字符串分成子字符串并将它们配对

java - Boyer-moore 计算单词 java

javascript - 模拟内部 axios.create()

java - 从字符串中获取字母的第一个实例

c++ - 将 C++ 中的 unicode 字符串转换为大写

javascript - 无法获取AngularJS中下拉菜单的值

javascript - 我该如何摆脱 "be the first of your friend to like this"?

javascript - php jquery 投票系统