我有以下代码行可以替换静态html文件中的一些内容:
$ = cheerio.load( fs.readFileSync( path_Url ) );
$('a').each( ( idx , _e ) => {
let guidId = $(_e).attr('href').split('/').pop().split('.')[0],
keyMessage = guidIdsMaper.get(guidId);
keyMessage = ( keyMessage !== undefined ) ? keyMessage : ' ( please enter respective keyMessage ) ';
$(_e)
.attr('href' , '#')
.attr( 'onclick' , `document.location = 'veeva:gotoSlide(${keyMessage}.zip)'` )
});
let inner_content = $.html();
fs.writeFileSync( path_Url , inner_content , 'utf8');
因此,最初在我的html文件中,锚点如下所示:
<a href="melt://navigatetoitem/RHEU-1218304-0000_html_0002.html">
<div id="item91263" class="pageItem" alt="Rectangle"> </div>
</a>
如您所见,使用下面的代码行:
$(_e).attr('href' , '#')
.attr( 'onclick' , `document.location = 'veeva:gotoSlide(${keyMessage}.zip)'` )
但是使用替换代码,我得到了几个特殊的单引号'
字符,因此输出如下:
<a href="#" onclick="document.location = 'veeva:gotoSlide(RHEU-1218304-0000_html_0002.zip)'">
<div id="item91263" class="pageItem" alt="Rectangle"> </div>
</a>
那我如何避免得到这个'
而得到'
呢?是否有必要使用htmlparser2之类的东西,我已经尝试过了,到目前为止还没有运气。
答案 0 :(得分:1)
您可以通过hack
方法replace
:
$ = cheerio.load( fs.readFileSync( path_Url ) );
const SPECIAL_CHAR = '_XXX_'; // define you special string
$('a').each( ( idx , _e ) => {
let guidId = $(_e).attr('href').split('/').pop().split('.')[0],
keyMessage = guidIdsMaper.get(guidId);
keyMessage = ( keyMessage !== undefined ) ? keyMessage : ' ( please enter respective keyMessage ) ';
$(_e)
.attr('href' , '#')
.attr( 'onclick' , `document.location =${SPECIAL_CHAR}veeva:gotoSlide(${keyMessage}.zip)${SPECIAL_CHAR}` )
});
let inner_content = $.html().replace(new RegExp(SPECIAL_CHAR, 'g'), `'`); // hack you charactors
fs.writeFileSync( path_Url , inner_content , 'utf8');