我正在尝试阅读包含城市信息的.csv文件的内容,如下所示:
Paris,2138551,5.272,1,138,900,48.864716,2.349014
Marseille,794811,1.959,423,439,43.29695,5.38107
Lyon,472317,1.164,251,730,45.74846,4.84671
Toulouse,433055,2.135,230,826,43.60426,1.44367
Nice,338620,1.669,180,545,43.675819,7.289429
Nantes,277269,1.367,147,879,47.21725,-1.55336
所以我想解析文件,并使用.split(',')将其转换为数组(不是对象)。
这是我的问题,当我使用Regexp删除这些该死的\ n和\ r时使用以下正则表达式时,它不起作用,它们仍然在窃听我的输出:
var cities = data.replace(/\n/g, '').replace("'", '').split(',');
然后,当我使用这个正则表达式时,它也会删除所有“,”!所以我尝试用“_”替换它们,这是有效的,但后来我有另一个问题,它还从纬度和经度中删除减号( - ):
var cities = await data.replace(/(?:\\[rn]|[\r\n]+)+/g,
'_').replace(/[^\w\s]/gi, '').split('_');
(顺便说一下“_”并没有出现在上面的代码中,因为分裂idk为什么)
如何在不触及“,”和“ - ”的情况下删除\ n和\ s,就像第二个正则表达式一样?
我真的没有进入正则表达式。
编辑:我已经使用了其中一个解决方案,但输出仍然有问题,这意味着以下行仍未删除空白行: var cities = await data.replace(/(?:\ [rn] | [\ r \ n] +)+ / g,',')。replace(/ [^ \ w \ s, - ] / gi,' , ')分裂(',“);尽管上面有正则表达式,仍然必须有/ n或/ r。谁知道如何摆脱线?
输出被窃听,你可以看到:
console.log('城市:'+ i +'sur'+ cities.length +' - “'+ cities [i] +'”,“'+ countryName +'”,'+ cities [ii] +',' +城市[III] +”, '+城市[iv] +','+城市[v] +','+城市[vi] +'\ n');
城市:0 sur 1095 - “纽约市”,“美国”,8537673,31,709,34,245
城市:6 sur 1095 - “881”,“United States”,40,730610,-73,935242,Los Angeles
城市:12 sur 1095 - “3971883”,“美国”,14,752,15,931,949
城市:18 sur 1095 - “34”,“United States”,052235,-118,243683,Chicago,2720546
答案 0 :(得分:0)
我使用了WiktorStribiżew的代码
/ [^ \ w \ s, - ] / gi -
并添加了“。”在其中,因为这导致数组被分开
此外,我发现向我发送CSV的人改变了它的结构......所以现在我认为它有效,这是最终的结果。谢谢你的帮助
var cities = await data.replace(/(?:\ [rn] | [\ r \ n] +)+ / g,',')。replace(/ [^ \ w \ s, - 。] / gi,',')。split(',');