【问题标题】:Basic JavaScript string equality failing in GulpGulp 中的基本 JavaScript 字符串相等性失败
【发布时间】:2016-08-09 17:21:18
【问题描述】:

我有这个 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);
        }

我得到了这个令人抓狂的输出

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

【问题讨论】:

  • 除非您对 console.log 输出做了一些花哨的事情,否则 adjusted 似乎包含在颜色控制序列中,例如\e[31m。这个答案可能会有所帮助:stackoverflow.com/a/29497680/693275
  • @RobM。啊 - 这是有道理的。我发现了颜色——我愚蠢地没有把 2 和 2 放在一起。发布答案以便我接受?
  • 很高兴为您工作,已添加答案:-)

标签: javascript node.js gulp gulp-print


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 2018-04-06
    • 2011-10-29
    • 2021-12-21
    相关资源
    最近更新 更多