2015-11-18 2 views
1

У меня есть строка, которая мне WebApp отформатирован так:Javascript не заменяет строку

GPL.TU01<50;0;100;0;0>

я должен из это следующим образом:

GPL.TU01 
< 
50; 
0; 
100; 
0; 
0 
> 

Это то, что я с помощью:

var GET_result_formatted = GET_result; 
global_file_content = GET_result; 
GET_result_formatted = GET_result_formatted.replace("<", "\r<\r"); 
GET_result_formatted = GET_result_formatted.replace(';', ";\r"); 
GET_result_formatted = GET_result_formatted.replace(">", "\r>"); 
$('#ModalGPLTextarea').val(GET_result_formatted); 

Но печальный результат:

GPL.TU01 
< 
50; 
0;100;0;0 
> 

Что я делаю неправильно?

+0

Вам необходимо использовать регулярное выражение для String.replace для замены нескольких экземпляров. – risyasin

+3

Возможный дубликат [Замена всех вхождений строки в JavaScript] (http://stackoverflow.com/questions/1144783/replacing-all-occurrences-of-a-string-in-javascript) –

ответ

8

.replace только заменяет первое вхождение, когда передается строка.
Используйте regex вместо этого, для ;:

GET_result_formatted = GET_result_formatted.replace("<", "\r<\r"); 
GET_result_formatted = GET_result_formatted.replace(/;/g, ";\r"); 
GET_result_formatted = GET_result_formatted.replace(">", "\r>"); 

g в /;/g является "глобальным" флаг, это означает, что он заменит все вхождения ;.


Эти линии также могут быть сокращены много, так как .replace может быть прикован:

var GET_result_formatted = GET_result.replace("<", "\r<\r") 
            .replace(/;/g, ";\r") 
            .replace(">", "\r>"); 
global_file_content = GET_result; 
$('#ModalGPLTextarea').val(GET_result_formatted); 

Обратите внимание на отсутствие ; в конце первых 2-х линий.

+0

Хороший ответ :) [Здесь ] (http://jsmantras.com/blog/String-Methods-search-match-and-replace) - это еще один материал в '.replace' и других строковых методах. Извините за беспокойство, я начал с моего собственного ответа, но это была бы почти точная копия вашего ответа. Не возражаете ли вы добавить что-то к своему ответу о '.split', а затем' .join'? Лично я видел более быстрые результаты, а не «.replace» :) – tkellehe

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