Gulp中基本的JavaScript字符串相等性失败

时间:2016-08-09 17:21:19

标签: javascript node.js gulp gulp-print

我有这个gulp任务

gulp.src([`../../**/*.js`].concat(dontCheck.map(p => '!../../' + p)))
    .pipe(gulpPrint(path => {
        let adjusted = path.replace('..\\..\\', '').replace(/\\/g, '/');

        let target = 'account/account.js';
        if (adjusted == target){
            console.log('FOUND');
        } else {
            console.log('NOT FOUND', '|' + target + '|', '|' + adjusted + '|', String(target) == String(adjusted), typeof target, typeof adjusted);
        }

我得到了令人抓狂的输出

enter image description here

为什么这些字符串不匹配? adjusted是否有不同的unicode编码?如果是这样,我如何调和它?

1 个答案:

答案 0 :(得分:1)

除非您为我们突出显示console.log输出,否则adjusted似乎包含在颜色控制序列中,例如\e[31m

This answer might help,它提供此正则表达式来替换控制序列:

/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g