2015-09-14 2 views
1

У меня есть объект JSON, который генерируется из CSV файла:JavaScript заменить не снимая возврат каретки

{"FID":["FID"],"the_geom":["the_geom"],"X":["X"],"Y":["Y"],"ROW":["ROW"],"COL":["COL"],"EMH":["EMH"],"B":["B_SURF","B_SUB1","B_SUB2"],"BP_CA":["BP_CA_SUR","BP_CA_SUB1","BP_CA_SUB2"],"BP_K":["BP_K_SURF","BP_K_SUB1","BP_K_SUB2"],"BP_MG"["BP_MG_SUR","BP_MG_SUB1","BP_MG_SUB2"],"BP_NA":["BP_NA_SUR","BP_NA_SUB1","BP_NA_SUB2"],"CA"["CA_SURF","CA_SUB1","CA_SUB2"],"CAMG":["CAMG_SURF","CAMG_SUB1","CAMG_SUB2"],"CEC"["CEC_SURF","CEC_SUB1","CEC_SUB2"],"CLAY":["CLAY_SURF","CLAY_SUB1","CLAY_SUB2"],"CU"["CU_SURF","CU_SUB1","CU_SUB2"],"DPRR_SUMM":["DPRR_SUMM"],"DRAIN_SUMM"["DRAIN_SUMM"],"FE":["FE_SURF","FE_SUB1","FE_SUB2"],"K"["K_SURF","K_SUB1","K_SUB2"],"KMG":["KMG_SURF","KMG_SUB1","KMG_SUB2"],"MG"["MG_SURF","MG_SUB1","MG_SUB2"],"MN":["MN_SURF","MN_SUB1","MN_SUB2"],"NA":["NA_SURF","NA_SUB1","NA_SUB2"],"OM":["OM_SURF","OM_SUB1","OM_SUB2"],"P"["P_SURF","P_SUB1","P_SUB2"],"PAVL"["PAVL_SURF","PAVL_SUB1","PAVL_SUB2"],"PAW24_SUMM":["PAW24_SUMM"],"PAW30_SUMM"["PAW30_SUMM"],"PAW36_SUMM":["PAW36_SUMM"],"PAW42_SUMM":["PAW42_SUMM"],"PAW48_SUMM":["PAW48_SUMM"],"PH":["PH_SURF","PH_SUB1","PH_SUB2"],"RZFC_SUMM":["RZFC_SUMM"],"RZKUSAT_SU"["RZKUSAT_SU"],"RZPAW_SUMM":["RZPAW_SUMM"],"RZPWP_SUMM"["RZPWP_SUMM"],"RZSAT_SUMM":["RZSAT_SUMM"],"S":["S_SURF","S_SUB1","S_SUB2"],"SAND":["SAND_SURF","SAND_SUB1","SAND_SUB2"],"TEX"["TEX_SURF","TEX_SUB1","TEX_SUB2"],"THICK"["THICK_SURF","THICK_SUB1","THICK_SUB2"],"TIP":["TIP_SURF","TIP_SUB1","TIP_SUB2"],"ZN":["ZN_SURF","ZN_SUB1","ZN_SUB2"],"EMV"["EMV"],"ASP":["ASP"],"DEM":["DEM"],"SLOPE\r":["SLOPE\r"]} 

В самом конце, объект наклона имеет возврат каретки во имя (оно было перенесено из csv conversion)

Мне нужно удалить этот возврат каретки из объекта, поскольку он испортил некоторые другие скрипты, которые анализируют объект.

Я попытался тестирования, выполнив:

console.log("Without carrage return: " + JSON.stringify(jsonObject).replace(/[\n\r]/g, '')); 

Но когда я печатаю, он все еще содержит возврат каретки.

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

Любая помощь приветствуется, спасибо!

+1

Попробуйте заменить (/ \\ r/g, '') '. – sigod

+1

Возможно, это не возврат каретки, а строка '\ r'. – MinusFour

+0

BTW указанная выше строка JSON недействительна. – MaxZoom

ответ

2

Ваше регулярное выражение немного сломанно. Поскольку \ также является специальным символом, вам нужно также дефференцировать это.

Попробуйте сделать это вместо:

console.log("Without carrage return: " + JSON.stringify(jsonObject).replace(/[\\n\\r]/g, '')); 

Ваше регулярное выражение соответствие с \ г характер в целом, но так как вы преобразуете все в строку вы в конечном итоге того, чтобы соответствовать для символов «\» и ' р'.

+2

Регулярное выражение правильное, но объяснение не является. Вы не избегаете специального символа '\\', потому что он необходим для возврата каретки, но соответствует представлению строки возврата каретки (а не самому возврату каретки). См. Это [regex] (https://regex101.com/r/nE1zM9/1) для иллюстрации истинного соответствия CR. – MaxZoom

0

В регулярных выражениях \r и \n матч возврата каретки и новой строки, но JSON.stringify() превращает возврат каретки в '\r'.

Так что вам просто нужно использовать \\r вместо \r:

console.log("Without carrage return: " + JSON.stringify(jsonObject).replace(/\\n|\\r/g, '')); 

EDIT: /[\\n\\r]/g бы соответствовал каждой обратной косой черты и каждая буква г и п в строке, а не только последовательность \ г. /\\n|\\r/g работает лучше.

1

Возможно, \ r в csv буквально обратная косая черта и r?

console.log(JSON.stringify(jsonObject).replace("\\r", "")) 
+0

Не могу поверить, что я этого не поймал ... Наверное, это то, что происходит, когда вы получаете только 5 часов сна из-за крайних сроков :) –

+0

Будет принимать через 3 минуты, когда это позволит мне –

+0

Удаляет ли это только первый '\ r' появление? – MaxZoom

Смежные вопросы