1

我有一个文本文件,我试图将其解析为 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 中弄清楚。

4

2 回答 2

4

试试这个:

var regxp = /\r\n/g;
于 2013-06-19T20:23:59.560 回答
2

你应该只是做这个替换:

str = str.replace(/\r/g, "");
于 2013-06-19T20:37:05.410 回答