2013-06-19 6 views
0

У меня есть текстовый файл, который я пытаюсь проанализировать в массиве в Javascript.Заменить возврат каретки окон в Javascript

Поля разделяются двойной карат («^^») и строки заканчиваются символом новой строки («\ п»)

Одно из полей является сыпучий текстовое описание и пользователи часто вступают данные путем копирования и вставки его из 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 лощину, который определяет начало новой записи.

Я искал регулярное выражение для замены CR/ЛФА в моем тексте, и вот что у меня есть:

var eplaceCarriageReturns = function(str) { 
    var regxp = /[\r\n]/g 
    str = str.replace(regxp, " "); 
    return str; 
} 

Проблема заключается в том, это сейчас ест мой перевод строку тоже, превращая мой поток в один большой блок , Если это единственный способ, я рисую пробел в том, как его анализировать, поскольку мои новые строки - единственное, что означает новую запись.

Эта проблема мучила меня годами. Я решил это в Ruby, просто удалив все «CR/LF», а затем преобразовывая замену оставшихся строк новой строки на «^^». Это позволяет мне string.split ('^^'), а затем класть каждый 23 среза в новый массив.

Не может показаться, что это видно в Javascript.

+0

Так просто заменить CR с помощью '/ \ г/G'? Я не уверен, что вы спрашиваете. – bfavaretto

+0

Ну, '/ [\ r \ n]/g' - класс символов, поэтому он будет соответствовать любым вхождениям * либо *' \ r', либо '\ n', но не два из них объединены. Может быть, вы хотите только совместить, когда они рядом друг с другом? Это будет '/ \ r \ n/g'. – eldarerathis

+0

Я думаю, вы на что-то с этим. Я думаю, что мое регулярное выражение не делает то, что я так и думал. Я собираюсь проверить это сейчас. –

ответ

2

Попробуйте вместо этого:

var regxp = /\r\n/g; 
+0

Я не могу вас поблагодарить! Вот и все! –

1

Вы просто должны делать эту замену:

str = str.replace(/\r/g, ""); 
Смежные вопросы