Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 输出相同但字符长度不同_Javascript_Node.js_Casperjs - Fatal编程技术网

Javascript 输出相同但字符长度不同

Javascript 输出相同但字符长度不同,javascript,node.js,casperjs,Javascript,Node.js,Casperjs,我有这个剧本: var last_build_no = this.getTitle(); var plain_build_no = "#53 "; console.log(last_build_no.length); console.log(plain_build_no.length); 这是输出: 5 4 '#5​3 ' '#53 ' 造成这种差异的原因是什么?如何将这些字符串转换为相同的格式 由于这种差异,我的测试用例失败了,但我看到的字符串看起来是一样的

我有这个剧本:

    var last_build_no = this.getTitle();
    var plain_build_no = "#53 ";
    console.log(last_build_no.length);
    console.log(plain_build_no.length);
这是输出:

5
4
'#5​3 '
'#53 '
造成这种差异的原因是什么?如何将这些字符串转换为相同的格式

由于这种差异,我的测试用例失败了,但我看到的字符串看起来是一样的:

test.assertEquals(last_build_no, plain_build_no, "Last Build page has expected title");

字符串包含零宽度的空格。如果记录字符代码,则可以看到:

last_build_no.split("").forEach(c => console.log(c.charCodeAt(0)));

/* 
  Outputs:
  35
  53
  8203  <-- http://www.fileformat.info/info/unicode/char/200b/index.htm
  51
  32
*/

有关更多信息,请参见

看起来您可能有一个宽字符,请确保两个字符使用相同的编码,例如UTF8。我正在查找这个字符。脚本文件具有utf-8编码。如何将两个字符串转换为相同的编码格式?第一个“53”包含介于5和3之间的。也许你可以去掉所有的空白?或者,您可以将其与同样具有零宽度空间的字符串进行比较。宾果!也许你可以写一个答案,这样我就可以接受了。
var last_build_no = '#5​3 '.replace(/[\u200B-\u200D\uFEFF]/g, '');
console.log(last_build_no.length);  // Output: 4