在Typescript中读取CSV时,读取number时给出NaN



我想用Typescript读取CSV文件

这是我的代码:

export default class Playlist{
public playlistId: Number = 0;
public playlistName: string = '';
constructor(line:string){
const item = line.split(',')
this.playlistId = +item[0];
this.playlistName = item[1];
}
}
<标题>
fs.readFile('.\csv\playlist.csv', 'utf8',(err, res) => {
if(err){
console.error('YEET');
return;
}else{
const playlists =  res.split('n').slice(1).map((x:string) => new Playlist(x))
console.log(playlists)
}
})

这是CSV数据:

"1","Music"
"2","Movies"
"3","TV Shows"
"4","Audiobooks"

这是我得到的播放列表对象:

Playlist { playlistId: NaN, playlistName: '"Music"r' },

正如你所看到的playlistd,我得到NaN,但我不知道为什么,因为我解析它正确的数字。此外,播放列表的名称也不一定是一个奇怪的格式。

这是因为您在每个值周围都有语音标记。使用以下命令修复Playlist类:

固定播放列表类

export default class Playlist {
public playlistId: Number = 0;
public playlistName: string = "";
constructor(line: string) {
const item = line.split(/"|\r/).join("").split(",");
this.playlistId = Number(item[0]); // or keep as =+ item[0]
this.playlistName = item[1];
}
}

或者,从CSV文件中删除引号。

修复播放列表CSV

1,Music
2,Movies
3,TV Shows
4,Audiobooks

如果你看到你的playlistName,它包括一对额外的双引号'"Music"r'

在您解析item[0]之前,它也应该看起来像'"1"'+'"2"',当您解析它时预计是NaN。

一个简单的修复方法是将所有引号替换为空字符,有效地将解析更改为+item[0].replace(/"/g, "")

不放;在每个值之后?只是个问题?

相关内容

  • 没有找到相关文章

最新更新