javascript - 输出相同但字符长度不同

标签 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 '

造成这种差异的原因是什么?如何以相同的格式转换此字符串?

enter image description here

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

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
*/

Unicode 具有以下零宽度字符:

  • U+200B 零宽度空格
  • U+200C 零宽度非连接 Unicode 代码点
  • U+200D 零宽度连接符 Unicode 代码点
  • U+FEFF 零宽度不间断空格 Unicode 代码点

您可以使用简单的正则表达式将其删除:

var last_build_no = '#5​3 '.replace(/[\u200B-\u200D\uFEFF]/g, '');
console.log(last_build_no.length);  // Output: 4

参见this SO answer了解更多信息

关于javascript - 输出相同但字符长度不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44578149/

相关文章:

javascript - 将页面的每个onclick替换为img src链接?

javascript - 在 NodeJS 中提供 mp3 文件以用于音频标签

javascript - 用casperjs点击按钮没有反应

javascript - CasperJS 和 'Unsafe JavaScript attempt to access frame with URL' 错误

javascript - 单选按钮焦点/使用 TAB 键盘选择

javascript - 单击按钮以启用复选框,按钮消失

javascript - 使用 jquery 或 javascript 解析 Json 对象

javascript - 请求 JS Uri 请求错误

arrays - 如何在 mongoose/mongodb 的文档中获取对象数组中的对象?

javascript - 登录银行帐户时 CasperJS 超时