JQuery заменить несколько вхождений подстроки / текста
В настоящее время я пытаюсь выучить replace
метод в jQuery.
у меня есть <div class="notes">
со следующим текстом
(1 1 1 0 0 1 1)(1 1 1 0 0 1 1)(1 1 1 0 0 1 1)(1 1 1 0 0 0 0)(1 1 1 0 0 1 1)
и хотел бы заменить текст с определенными значениями. Например, каждый раз, когда я вижу )(
Я бы хотел, чтобы он перешел на новую строку (<br/>
). Я пытался использовать метод замены jQuery для достижения этой цели.
$(document).ready(function() {
var text = $('.notes').html().replace(")(", "<br/>");
$('.notes').html(text);
});
Я отметил, что при этом он заменял только первый экземпляр. Итак, я попробовал replaceAll
метод, хотя это не влияло на строку.
Быстрая скрипка Демо или фрагмент ниже:
$(document).ready(function() {
var text = $('.notes').html().replace(")(", "<br/>");
$('.notes').html(text);
alert(text);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="notes">
(1 1 1 0 0 1 1)(1 1 1 0 0 1 1)(1 1 1 0 0 1 1)(1 1 1 0 0 0 0)(1 1 1 0 0 1 1)
</div>
Кто-нибудь может посоветовать, как мне поступить по этому поводу?
5 ответов
Вам нужно использовать регулярное выражение, которое работает глобально, обратите внимание на /g
команда.
Для вашего случая вам нужно использовать следующее:
/\)\(/g
$(document).ready(function() {
var text = $('.notes').html().replace(/\)\(/g, "<br/>");
$('.notes').html(text);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="notes">
(1 1 1 0 0 1 1)(1 1 1 0 0 1 1)(1 1 1 0 0 1 1)(1 1 1 0 0 0 0)(1 1 1 0 0 1 1)
</div>
.replace()
является методом String, а не методом jQuery, так что должен делать простой RegExp.
var text = $('.notes').html().replace(/\)\(/g, "<br/>");
Обратите внимание на g
Команда, которая обозначает глобальный, что означает, что это относится ко всем экземплярам.
Ответ без регулярного выражения (разбить и объединить):
$(function() {
var notes = $('.notes');
notes.html(notes.html().split(')(').join(')<br/>('));
});
Ну вот -
Вот, /\(|\)/g
является регулярным выражением (регулярное выражение). Флаг g
означает глобальный. Это приводит к замене всех совпадений.
$(document).ready(function() {
var text = $('.notes').text().replace(/\(|\)/g, "<br/>");
$('.notes').html(text);
alert(text);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="notes">
(1 1 1 0 0 1 1)(1 1 1 0 0 1 1)(1 1 1 0 0 1 1)(1 1 1 0 0 0 0)(1 1 1 0 0 1 1)
</div>
$(document).ready(function() {
$('.notes').html($('.notes').html().replace(/\)\(/g, '<br />'));
});