Замените несколько строк одновременно - PullRequest
59 голосов
/ 21 февраля 2011

Есть ли такой простой эквивалент в JavaScript?

$find = array("<", ">", "\n");
$replace = array("&lt;", "&gt;", "<br/>");

$textarea = str_replace($find, $replace, $textarea); 

Это использует PHP str_replace, который позволяет вам использовать массив слов для поиска и замены. Могу ли я сделать что-то подобное с помощью JavaScript / jQuery?

...
var textarea = $(this).val();

// string replace here

$("#output").html(textarea);
...

Ответы [ 13 ]

1 голос
/ 03 октября 2018

Верхний ответ эквивалентен выполнению:

let text = find.reduce((acc, item, i) => {
  const regex = new RegExp(item, "g");
  return acc.replace(regex, replace[i]);
}, textarea);

При этом:

var textarea = $(this).val();
var find = ["<", ">", "\n"];
var replace = ["&lt;", "&gt;", "<br/>"];

В этом случае императивное программирование не выполняется.

0 голосов
/ 27 декабря 2016

У меня был случай, когда я должен был удалить символы из строки и сделал это так:

 let badChars = ['å', 'ä', 'ö'];
 let newName = fileName.split("").filter((chr) => badChars.indexOf(chr) === -1).join("");

Было бы очень аккуратно, если бы строки были по своей природе массивами символов в javascript, чтобы мы не сталиМне нужны были эти split / join, как newName = fileName.filter((chr) => badChars.indexOf(chr) === -1), но я все еще думаю, что это аккуратно и читабельно, если вам нужно иметь дело только с символами, а не susbstrings.

0 голосов
/ 21 февраля 2011

Один метод будет:

var text = $(this).val();
text = text.replace(/</g, "&lt;").replace(/>/g, "&gt;");
$("#output").html(text);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...