Вопрос о степени функциональности функции .replace - PullRequest
1 голос
/ 07 апреля 2019

Я довольно новичок в Javascript и это в целом. После поиска я не смог найти ответ на свой вопрос или, возможно, я просто искал не ту вещь.

В классе нас попросили написать что-то, где пользователь мог бы ввести число и получить отображение числа обратно и всех чисел, приведших к этому. Другая часть этого состояла в том, чтобы заменить все экземпляры чисел, содержащих такие числа, как 5 или 8, словом.

Но У меня был вопрос, смогу ли я достичь той же способности с помощью функции замены.

Примерно так, как показано ниже, но если пользователь отобразит 50,51,52, он скажет Hello, Hello, Hello вместо Hello0, Hello1, Hello2.

$ (this) .html ($ (this) .html (). Replace (/ 5 / g, "Hello"));

Первоначальное назначение было выполнено с использованием нескольких других операторов if. Я также мог бы подражать желаемой цели выше, просто выписав тонны вариаций вышеупомянутого, но это вряд ли практично.

$ (this) .html ($ (this) .html (). Replace (/ 5 / g, "Hello"));

Ответы [ 3 ]

0 голосов
/ 07 апреля 2019

Если вы хотите заменить числа любой длины одной вещью, вы можете использовать регулярное выражение , как /\d+/, что означает любое количество цифр:

let s = "50,51,52"
console.log(s.replace(/\d+/g, "hello"))

// only replace digits -- leaves everything else
let s2 = "500 some txt, 1 other,52 more"
console.log(s2.replace(/\d+/g, "hello"))
0 голосов
/ 07 апреля 2019

jQuery имеет сокращенный метод замены textContent элемента, и это с помощью функции .Возможно, вы могли бы использовать это вместо этого.Тогда нужно просто настроить регулярное выражение так, чтобы оно включало несколько строк (\d+) несколько раз в строку ( флаг g ).Я использовал text() вместо html(), поскольку они используются по-разному, и первое лучше для вашего случая использования.

$('div').text(function (i, e) {
  return e.replace(/\d+/g, 'Hello');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div>50,51,52</div>

Если вы хотите добавить пробелы после запятых, как в вашем примере, возможно, подходите к этому по-другому.Здесь я разбил строку на массив, используя аналогичное регулярное выражение, map все сопоставленные шаблоны со словом «Hello», а затем снова объединил массив в строку.

$('div').text(function (i, e) {
  return e.split(/\d+,/g).map(s => 'Hello').join(', ');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div>50,51,52</div>
0 голосов
/ 07 апреля 2019

Я считаю, что вам нужно простое регулярное выражение с числами:

$("#numbers").on("click", function() {
  $(this).html($(this).html().replace(/\d{2}/g, "Hello"));
});
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<p id="numbers">51, 52, 53</p>
<p>Click the above paragraph to see magic!</p>
<sub>One-time magic only</sub>
...