用包含实例索引的变量替换字符串的每个实例

bjo*_*k24 1 javascript

假设我有一个包含原始SVG XML大串,我想改变的每个实例<path,以<path class="pathX"(其中X是匹配项的索引).在javascript中执行此操作的最佳方法是什么?我正在使用这个有效的代码,但我很好奇是否有更好的方法:

var svgArray = mySvgStr.split('<path ');
for(var i = 1, len = svgArray.length; i < len; i++) {
  var newStr = 'class="path' + i + '" ' + svgArray[i];
  svgArray[i] = newStr;
}
var svgWithClasses = svgArray.join('<path ');
Run Code Online (Sandbox Code Playgroud)

Wil*_*lly 6

那么解析XML字符串并使用DOM表示呢?使用jQuery:

doc = $.parseXML(xmlString);
Run Code Online (Sandbox Code Playgroud)

没有jQuery:

var parser = new DOMParser();
var doc = parser.parseFromString(xmlString);
Run Code Online (Sandbox Code Playgroud)

然后你可以做这样的事情:

var paths = doc.getElementsByTagName('path');
// add attributes here
Run Code Online (Sandbox Code Playgroud)

这是一种不易出错的方法.