Remplacer les multiples cordes à la fois
Est facile équivalent à ceci en JavaScript?
$find = array("<", ">", "\n");
$replace = array("<", ">", "<br/>");
$textarea = str_replace($find, $replace, $textarea);
C'est à l'aide de PHP str_replace
, qui vous permet d'utiliser un tableau de mots à rechercher et remplacer. Puis-je faire quelque chose comme ceci à l'aide de JavaScript /jQuery?
...
var textarea = $(this).val();
//string replace here
$("#output").html(textarea);
...
- Juste pour clarifier, vous faites ça pour échapper html?
- De multiples remplacer au lieu d'une seule remplacer? Si vous voulez faire quelque chose comme ça de manière efficace, vous avez besoin d'une expression régulière. Ce n'est pas ce que la réponse sélectionnée est en train de faire.
- Voir ce la poste, je pense que c'est ce que vous cherchez
Vous devez vous connecter pour publier un commentaire.
Vous pouvez étendre la Chaîne de l'objet avec votre propre fonction qui fait ce que vous avez besoin (utile s'il y a des fonctionnalités manquantes):
Mondial pour les remplacer, vous pouvez utiliser les regex:
L'utilisation de la fonction qu'il serait similaire à votre PHP exemple:
RegExp
caractères, par exemple: trouver array ["(", ")"] remplacer array ["[", "]"]replaceString = this;
àreplaceString = this.valueOf();
, sinon, sifind
est vide, la fonction retourne un Objet de type string à la place de la chaîne primitive.Erreur Commune
Presque toutes les réponses sur cette page, utilisation cumulative de remplacement et donc de subir le même défaut, le remplacement des chaînes sont eux-mêmes l'objet d'un remplacement. Voici quelques exemples où ce modèle échoue (h/t @KurokiKaze @derekdreery):
JS:
Solution
JS:
Remarque:
C'est plus compatible avec la variation de @elchininet de solution, qui utilise
map()
etArray.indexOf()
et donc ne fonctionne pas avec IE8 et plus.@elchininet de la mise en œuvre détient plus vrai de PHP
str_replace()
, car il permet aussi de chaînes de caractères comme des rechercher/remplacer les paramètres, et utilisera le premier à trouver la matrice de correspondance si il y a des doublons (ma version sera la dernière). Je n'ai pas accepter des chaînes dans cette mise en œuvre, parce que l'affaire est déjà géré par JS intégré dansString.replace()
.str_replace()
il était destiné à émuler -- mais cela mis à part, je préfère l'objet d'entrée trop! Il suffit de garder à l'espritObject.values
ne fonctionne pas dans IE sans un polyfill.Vous pouvez utiliser la méthode replace de la
String
objet avec une fonction dans le deuxième paramètre:Première Méthode (à l'aide d'un rechercher et remplacer Objet)
jsfiddle
Deuxième méthode (à l'aide de deux tableaux, rechercher et remplacer)
jsfiddle
De fonction souhaitée:
MODIFIER
Ce
function
admet uneString
ou unArray
comme paramètres:Strings
ouArray
deStrings
. Il fonctionne pas avec les expressions régulières, si vous souhaitez utiliser une RegExp comme un paramètre de recherche, vous devez analyser les trouverArray
de le convertir enRegExp
. Je vais vous donner un exemple, dans un couple de minutes.Une approche plus visuelle:
et ce est la façon dont vous l'appelez:
Vous voudrez peut-être chercher dans une bibliothèque JS appelé phpJS.
Il vous permet d'utiliser la fonction str_replace, de la même manière que vous pouvez l'utiliser en PHP. Il y a aussi beaucoup plus de fonctions php "porté" sur JavaScript.
http://phpjs.org/functions/str_replace:527
var find = [".",","];
var replace = [',', '.'];
Il n'y a aucun moyen de le faire en un seul appel de méthode, vous devrez soit de la chaîne d'appels, ou écrire une fonction qui manuellement le fait ce dont vous avez besoin.
Pour les tags, vous devriez être en mesure de simplement définir le contenu avec
.text()
au lieu de.html()
.Exemple: http://jsfiddle.net/Phf4u/1/
...ou si vous avez juste voulu supprimer la
<br>
éléments, vous pourriez se débarrasser de la.replace()
, et temporairement, de faire d'eux des éléments du DOM.Exemple: http://jsfiddle.net/Phf4u/2/
Haut réponse est équivalent à:
Donné ceci:
Dans ce cas, pas de la programmation impérative est en cours.
À l'aide de ES6:
Il existe de nombreuses façons de
search
pour les cordes et lesreplace
dansJavaScript
. L'un d'eux est comme suitJS:
Une méthode serait:
J'ai eu un cas où j'ai dû supprimer des caractères à partir d'une chaîne et il l'a fait comme ceci:
Aurait été extra soigné si les cordes étaient en soi des tableaux de caractères en javascript, de sorte que nous n'aurions pas besoin de ces split/join, comme
newName = fileName.filter((chr) => badChars.indexOf(chr) === -1)
mais je pense toujours que c'est clair et lisible si vous avez à traiter avec des personnages et pas susbstrings.