【问题标题】:String length shows that this string's length is 7, but actually string length is 6字符串长度显示这个字符串的长度是7,但实际上字符串长度是6
【发布时间】:2021-05-26 19:43:15
【问题描述】:

我的常量声明是这样的:

const table = req.params.table;

当我以“circle”作为表参数发送请求时,table.length 返回为 7。

我尝试过这样:

table.toString().trim().length

但还是显示这个词的长度是7。

我该如何解决这个问题?

【问题讨论】:

  • 什么是table
  • 为什么不向我们展示 req.params 中的内容?
  • console.log(req.params) 返回为 { table : '​circle' }

标签: javascript node.js express


【解决方案1】:

根据我在收到的数据中观察到的情况,有一个额外的 U+200B zero width space 字符。这就是长度没有达到预期的主要原因。

我从 cmets 复制了 { table : '​circle' } 并尝试在浏览器控制台中执行相同的操作,这就是它在控制台中的外观。

在下面的 sn-p 中也发生了同样的事情,即 \u200b 正在添加零宽度空格 unicode 字符

let x = { table : '​circle' }

console.log(x.table.length);

为了避免此问题,您可以执行以下操作

let x = { table: '​circle' }

const { table } = x;
const table2 = table.replace('\u200b', '');

console.log(table.length);
console.log(table2.length);

更多信息请参考

【讨论】:

    【解决方案2】:

    你需要一个赋值,因为字符串是不可变的。

     table = table.toString().trim()
    

    【讨论】:

    • const tbl = table.toString().trim() console.log(tbl.length);输出仍然是 7
    • 你的值是从哪里来的?
    • 来自 API 请求。
    • 请添加table的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 2014-06-15
    相关资源
    最近更新 更多