gpt4 book ai didi

node.js - 比较 Node js(vs-code)中的字符串属性的非常奇怪的行为

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:01 25 4
gpt4 key购买 nike

这是来自调试控制台:

a[0]
"15711"
a[0] == "15711"
"false"
parseInt(a[0]) == 15711
"true"

有人能解释一下吗?

“a”属性是我使用 fast-csv 从 csv 文件中读取的行之一。这是代码:

    var fs = require('fs')
var path = require('path')
var csv = require('fast-csv');
var all = [];
var stream = fs.createReadStream(path.join("./items.txt"));

var csvStream = csv({ delimiter: '\t' })
.on("data", function (data) {
console.log(data[0] == '1')
})
.on("end", function () {

})

stream.pipe(csvStream);

the repo

最佳答案

好的,您在存储库上的示例有一个值为 1 的 CSV。您可以看到这个“1”字符的长度实际上是 2(预期是 1)。第一个字符串的第一个字符是不可见字符。我做了一个:

data[0].charCodeAt(0)

检查那是哪个字符。它给了我值 65279,即 Zero width no break space 。这个字符是BOM来自 UTF8 编码流。您正在使用的项目存在与此相关的未决问题 ( here )。

由于这是一个空格字符,我们可以使用 trim() 删除它。并使比较表现正常。

或者使用解决方案从管道中剥离 BOM,就像问题中的人所做的那样,使用 strip-bom-stream包。

关于node.js - 比较 Node js(vs-code)中的字符串属性的非常奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41654445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com