2013-05-14 2 views
2

Я пытался возиться сJavaScript: Заменить последнее вхождение прямого слэша

replace(/_([^_]*)$/,replacement+'$1') 

с другого поста, но не могу заставить его работать

У меня есть строка:

<div class="plus"></div><div class="details"></div>text1/text2 

, который я хочу преобразовать в

<div class="plus"></div><div class="details"></div>text1/<br>text2 

, но я продолжаю получать замену/in/div

Кто-нибудь?

Edit: Для того, чтобы быть ясно, что я хочу, чтобы заменить последний

"/" 

с

"/<br>" 

только последним вхождением.

Я не знаю ... Может быть, мне лучше вернуться в моем коде и попытаться заменить косую черту перед предваряя с HTML ...

+0

Смотрите мой ответ .. –

ответ

0

Если вы не пытаетесь захватить слэш в спине -reference, добавьте косую черту в самом тексте:

replace(/_([^_]*)$/,replacement+'$1/') 
-----------------------------------^ 
2

Использование lastIndexOf() метода

var index = str.lastIndexOf('/'); 
str = str.substr(0, index + 1) + "<br>" + str.substr(index + 1); 

Вот fiddle

+0

работает также - но опять-таки отстает от способности только заменить /, если его НЕ частью end tag – CJe

+1

@CJe затем просто введите свою строку как «text1» или «text1/text2», а не все теги и выполните эту операцию. –

+0

Готово. И тогда я могу использовать «нормальную» операцию замены. Благодарю. – CJe

0

Это легче сделать, используя методы струнные:

var index = str.lastIndexOf('/'); 
str = str.substr(0, index) + str.substr(index + 1); 
1

Попробуйте

'<div class="plus"></div><div class="details"></div>text1/text2'.replace(/(\/)([^\/]*)$/, '$1' + '<br />' + '$2') 
+0

Это может работать, но я просто понял, что не все строки заканчиваются текстом, содержащим косую черту, означающую, что, например,

text1 не удастся :-( – CJe

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