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でそれを理解できないようです。