我有一个文本文件,我试图将其解析为 Javascript 中的数组。
字段由双克拉 ('^^') 分隔,行由换行符 ('\n') 终止
其中一个字段是自由流动的文本描述,用户通常通过从 PDF 复制和粘贴来输入数据。这会将胭脂回车引入我的流('\r\n')。
流看起来像这样:
Silver^^NM-GNF-000230^^Y^^18-JUN-13^^1800^^07-JUN-13^^L^^WF^^Matt Reidy^^2^^NM^^GNF^^Grant^^32.888889^^107.809722^^Vicinity of Kingston, NM^^24800^^ACRES^^5^^^^Highly varied fuels ranging from dry mixed conifer at the highest elevations to ponderosa pine, Pinyon-Juniper and interior chaparral dominate the lower elevations. Fuel loading is high due to lack of fire disturbance in past century.^^Extreme^^5590600 Ward Gulch^^CO-GWD-122^^Y^^18-JUN-13^^1730^^14-JUN-13^^L^^WF^^Jeff Berino^^3^^CO^^GWD^^Garfield^^39.689167^^107.734722^^10 miles North of Rifle, Colorado^^485^^ACRES^^95^^19-JUN-13^^Pinon juniper, sage, mixed conifer^^High^^1500000
在 5590600 和 Ward Gulch 之间有一个换行符,它决定了新记录的开始。
我已经搜索了一个正则表达式来替换我的文本中的 CR/LF,这就是我所拥有的:
var eplaceCarriageReturns = function(str) {
var regxp = /[\r\n]/g
str = str.replace(regxp, " ");
return str;
}
问题是,这现在也吃掉了我的换行符,把我的流变成了一个大块。如果这是唯一的方法,那么我将在如何解析它方面保持空白,因为我的换行符是唯一表示新记录的东西。
这个问题困扰了我多年。我已经在 Ruby 中解决了这个问题,方法是删除所有“CR/LF”,然后转换用 '^^' 替换剩余的换行符。这允许我 string.split('^^') 然后将每 23 个切片分块到一个新数组中。
不过,似乎无法在 Javascript 中弄清楚。