1

Javascript で配列に解析しようとしているテキスト ファイルがあります。

フィールドは 2 カラット ('^^') で区切られ、行は改行 ('\n') で終了します。

フィールドの 1 つはフリー フロー テキストの説明であり、ユーザーは多くの場合、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;
}

問題は、これが私のラインフィードも食べてしまい、私のストリームが 1 つの大きなブロックになってしまうことです。それが唯一の方法である場合、新しいレコードを示すのは改行だけだったので、それを解析する方法について空白を描いています。

この問題は何年も私を悩ませてきました。すべての「CR/LF」を削除し、残りの改行を「^^」に置き換えるだけでRubyで解決しました。これにより、string.split('^^') を実行し、23 スライスごとにチャンクして新しい配列にすることができます。

ただし、Javascriptでそれを理解できないようです。

4

2 に答える 2

4

代わりにこれを試してください:

var regxp = /\r\n/g;
于 2013-06-19T20:23:59.560 に答える