Petite question très simple, mais je ne comprends pas très bien comment faire.
J'ai besoin de remplacer chaque instance de '_' par un espace, et chaque instance de '#' par rien / vide.
var string = '#Please send_an_information_pack_to_the_following_address:';
J'ai essayé ça:
string.replace('#','').replace('_', ' ');
Je n'aime pas vraiment enchaîner des commandes comme celle-ci. Y a-t-il une autre façon de le faire en un seul?
javascript
jquery
Shannon Hochkins
la source
la source
Réponses:
Utilisez l'opérateur OR (
|
):Vous pouvez également utiliser une classe de caractères:
Violon
Si vous souhaitez remplacer le hachage par une chose et le trait de soulignement par une autre, il vous suffira de chaîner. Cependant, vous pouvez ajouter un prototype:
Mais pourquoi ne pas enchaîner? Je ne vois rien de mal à cela.
la source
#|_
est[#_]
, et vous pourriez aussi bien utiliser+
pour faire correspondre tous les matchs consécutifs pour améliorer les performancesstr.replace(/[+ -]/g,'');
mettez simplement un espace vide au milieu.Le chaînage est cool, pourquoi le rejeter?
Quoi qu'il en soit, voici une autre option en un seul remplacement:
Le remplaçant choisira "" si match == "#", "" sinon.
[Mise à jour] Pour une solution plus générique, vous pouvez stocker vos chaînes de remplacement dans un objet:
la source
var regex = new RegExp( Object.keys(replaceChars).join("|"), "g");
string.replace(regex,function(match) {return replaceChars[match];})
faites le pas supplémentaire: cela facilite la modification des replaceChars.Si vous souhaitez remplacer plusieurs caractères, vous pouvez appeler le
String.prototype.replace()
avec l'argument de remplacement étant une fonction qui est appelée pour chaque correspondance. Tout ce dont vous avez besoin est un objet représentant le mappage de caractères que vous utiliserez dans cette fonction.Par exemple, si vous souhaitez
a
remplacer parx
,b
avecy
etc
avecz
, vous pouvez faire quelque chose comme ceci:Sortie :
234xyz567yyyyxz
la source
var
parconst
ici. une alternative pour une prise en charge étendue du navigateur:var s ='234abc567bbbbac'; s = s.replace(/[abc]/g, function(m) { return {'a':'x','b':'y','c':'z'}[m]; }); console.log(s);
var chars = {a:'1', b:'2', c:'3'}; var s = '123abc123'; var u = s.replace(/[abc]/g, function(m) { return chars[m]; }); WScript.echo(u);
Spécifiez l'
/g
indicateur (global) sur l'expression régulière pour remplacer toutes les correspondances au lieu de la première:Pour remplacer un caractère par une chose et un caractère différent par quelque chose d'autre, vous ne pouvez pas vraiment vous déplacer en ayant besoin de deux appels distincts vers
replace
. Vous pouvez l'abstraire dans une fonction comme Doorknob l'a fait, bien que je l'aurais probablement pris un objet avec d'anciens / nouveaux comme paires clé / valeur au lieu d'un tableau plat.la source
Vous pouvez également essayer ceci:
find
fait référence au texte à rechercher etreplace
au texte à remplacer parCela remplacera les caractères insensibles à la casse. Pour faire autrement, changez simplement les drapeaux Regex comme requis. Par exemple: pour la casse, remplacez:
la source
Vous pouvez simplement essayer ceci:
cela remplacera., - et # par votre remplacechar!
la source
Voici un moyen simple de le faire sans RegEx.
Vous pouvez prototyper et / ou mettre en cache des choses comme vous le souhaitez.
la source
str.replace(/#|_/g,'')
sed
y ou à la Unixtr
), cela semble être la bonne réponse.S'il vous plaît essayez:
remplacer la chaîne multiple
var str = "http://www.abc.xyz.com"; str = str.replace(/http:|www|.com/g, ''); //str is "//.abc.xyz"
remplacer plusieurs caractères
var str = "a.b.c.d,e,f,g,h"; str = str.replace(/[.,]/g, ''); //str is "abcdefgh";
Bonne chance!
la source
Vous pouvez également passer un objet RegExp à la méthode replace comme
Javascript RegExp
la source
replace
appels - cela ne permet pas d'éviter cela.yourstring = '#Please send_an_information_pack_to_the_following_address:';
remplacer '#' par '' et remplacer '_' par un espace
newstring2 est votre résultat
la source
var str = '#this #is__ __#a test###__';
qu'il y a clairement plusieurs espaces dans cette chaîne.Voici une autre version utilisant String Prototype. Prendre plaisir!
la source
Je ne sais pas si cela va aider mais je voulais retirer
<b>
et</b>
de ma chaînedonc j'ai utilisé
Donc, fondamentalement, si vous voulez réduire un nombre limité de caractères et ne perdez pas de temps, cela sera utile.
la source
Voici une fonction «HTML sécurisée» utilisant une fonction de remplacement multiple «réduire» (cette fonction applique chaque remplacement à la chaîne entière, donc les dépendances entre les remplacements sont importantes).
la source