我有一个包含数据的文件,如下所示,
Test.txt,
<template class="get" type="amp-mustache">
<div class="divcenter">
/////Need to append data at this point/////
</div>
</template>
我有如下数据
[
{'text':'<p>grapes</p>'},
{'text':'<p>banana</p>'},
{'text':'<p>orange</p>'},
{'text':'<p>apple</p>'},
{'text':'<p>gua</p>'}
]
附加数据后应该是,
<template class="get">
<div class="divcenter">
<p>grapes</p>
<p>banana</p>
<p>orange</p>
<p>apple</p>
<p>gua</p>
</div>
</template>
我的代码,
fs.readFile(Test.txt, function read(err, data) {
if (err) {
throw err;
}
var file_content = data.toString();
var c = file_content.indexOf(' <div class="divcenter">');
});
但是找到索引后如何追加呢?
你可以
这样做:
- 查找要插入字符串的索引
对源字符串进行切片并插入新字符串
fs.readFile(Test.txt, function read(err, data) { if (err) { throw err; } var file_content = data.toString(); var str = "<p>grapes</p> <p>banana</p> <p>orange</p> <p>apple</p> <p>gua</p>"; var idx = file_content.indexOf('<div class="divcenter">') + '<div class="divcenter">'.length; var result = file_content.slice(0, idx) + str + file_content.slice(idx); });
这不是
仅使用substr
的最优雅的方式
var needle = '<div class="divcenter">';
var newString = file_content.substr(0, c + needle.length)
+ '__NEW_STRING__'
+ file_content.substr(needle.length - 1);
编辑:
一种更优雅的方法是使用 cheerio 将字符串遍历为 DOM。
为什么不在jquery中做。
使用 for 循环来执行此操作:
var uiDiv = $(".divcenter");
for(var i=0; i<data.length; i++){
uiDiv.append("<p>'"+data[i]+"'</p>");
}
希望它有效。