You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript读取CSV文件时数字字段返回NaN问题求助

问题原因
  • CSV字段外层包裹了双引号,直接按逗号拆分后得到的id值为"1"格式的带引号字符串,无法直接转换为有效数字,所以得到NaN结果。
  • Windows系统下CSV文件默认换行符为\r\n,仅按\n拆分内容会导致每一行末尾残留\r回车符。
  • 没有对字段外层的双引号做移除处理,导致名称字段保留了多余的引号符号。
解决方案

原生JS/TS修复方案(无需引入第三方库)

1. 优化换行拆分逻辑

调整文件内容拆分规则,兼容Windows和Unix系统的换行符,避免残留\r字符:

fs.readFile('.\\csv\\playlist.csv', 'utf8',(err, res) => {
  if(err){
    console.error('YEET');
    return;
  }
  // 用正则匹配两种换行符拆分,同时过滤空行避免报错
  const lines = res.split(/\r?\n/).filter(line => line.trim() !== '');
  const playlists = lines.slice(1).map((x:string) => new Playlist(x))
  console.log(playlists)
})

2. 调整Playlist构造函数的字段处理逻辑

新增移除字段首尾双引号的处理:

export default class Playlist{
  public playlistId: number = 0;
  public playlistName: string = '';

  constructor(line:string){
    const items = line.split(',');
    // 移除每个字段首尾的双引号
    const idStr = items[0].replace(/^"|"$/g, '');
    this.playlistId = Number(idStr);
    this.playlistName = items[1].replace(/^"|"$/g, '');
  }
}

生产级优化建议

如果CSV存在字段内含逗号、换行、转义引号的复杂场景,手动拆分容易出错,建议使用成熟的CSV解析库如csv-parser,可自动处理转义字符、换行兼容、字段映射等逻辑。

内容的提问来源于stack exchange,提问作者govit19

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:36:02