2015-04-28 2 views
0

Как преобразовать следующие с помощью JS регулярного выражения замены или что-то:Javascript удалить последнее вхождение в данной строке

var text = "line1<br>line2<br>line3<br>line4<br>" 
...js regex... 

так, что текст становится:

text = "line1<br>line2<br>line3<br>"; 

конечно число бр меняется, и каждая длина линии тоже изменяется

+0

Вы хотите удалить четвертую строку? Я не понимаю. Кроме того, я сомневаюсь, что регулярное выражение является надлежащим инструментом для этого. – dave

+2

Используйте '.split()', чтобы разделить его в массив, удалить последний элемент массива, затем '.join()', чтобы объединить их обратно в строку. – Barmar

ответ

1

Удаление только последней строки без регулярных выражений:

var text = "line1<br>line2<br>line3<br>line4<br>"; 
var pieces = text.split('<br>'); 
var newText = pieces.splice(0, pieces.length-2).join('<br>') + '<br>'; 

Обратите внимание, что этот код делает по крайней мере, три важных предположения:

  1. Сепаратор всегда <br>, а не, скажем, <br /> или <BR>.
  2. Входная строка всегда заканчивается <br>.
  3. Строка результата всегда заканчивается <br>, даже если она иначе пуста! (Например, если входная строка line1<br>, то выход будет <br>.
+0

выглядит так, что это хорошее решение, возлюбленный –

+0

Это работает на вводе 'line1
'? –

+0

Для 'line1
', он возвращает '
'. Я полагаю, что это правильно. – Trott

0

Вот один, что я позирую только потому, что я нашел время, чтобы сделать это. Она работает, но нуждается в индексе и нулевые чеках и такой .

var text = "line1<br>line2<br>line3<br>line4<br>"; 
var newText = text.substring(0, text.substring(0, text.length - 4).lastIndexOf("<br>")); 
+0

Почему минус 4? –

+0

Он удалит текст
с конца. Таким образом, функция lastIndexOf получит местоположение второго для последнего тега
. – superbAfterSemperPhi

+0

это тоже очень мило –

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