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 />'));
});
Другие вопросы по тегам