Comment puis-je ajouter des barres obliques à une chaîne en Javascript?
-
25-09-2019 - |
Question
Juste une chaîne. Ajouter \ » à chaque fois qu'il ya une seule citation.
La solution
replace
fonctionne pour la première citation, si vous avez besoin d'une petite expression régulière:
str = str.replace(/'/g, "\\'");
Autres conseils
poignées suivantes fonction JavaScript », », \ b, \ t, \ n, \ f ou \ r équivalent de addslashes fonction php ().
function addslashes(string) {
return string.replace(/\\/g, '\\\\').
replace(/\u0008/g, '\\b').
replace(/\t/g, '\\t').
replace(/\n/g, '\\n').
replace(/\f/g, '\\f').
replace(/\r/g, '\\r').
replace(/'/g, '\\\'').
replace(/"/g, '\\"');
}
Une chaîne peut être échappé complètement et en utilisant JSON.stringify compacte. Il fait partie de JavaScript au ECMAScript 5 et pris en charge par les principales versions de navigateur plus récente.
str = JSON.stringify(String(str));
str = str.substring(1, str.length-1);
En utilisant cette approche, aussi les caractères spéciaux comme l'octet nul, caractères unicode et les sauts de ligne \r
et \n
sont correctement échappés dans un communiqué relativement compact.
Pour être sûr, vous devez non seulement remplacer les guillemets simples, mais aussi bien ceux qui sont déjà échappées:
"first ' and \' second".replace(/'|\\'/g, "\\'")
Une réponse que vous n'avez pas demandé qui peut être utile, si vous faites le remplacement en cours de préparation pour envoyer la chaîne d'alerte () -. Ou quoi que ce soit d'autre où un caractère de guillemet simple peut vous faire trébucher
str.replace("'",'\x27')
qui remplacera tous les guillemets simples avec le pour guillemet simple code hexadécimal .
var myNewString = myOldString.replace(/'/g, "\\'");
var str = "This is a single quote: ' and so is this: '";
console.log(str);
var replaced = str.replace(/'/g, "\\'");
console.log(replaced);
Vous donne:
This is a single quote: ' and so is this: '
This is a single quote: \' and so is this: \'
if (!String.prototype.hasOwnProperty('addSlashes')) {
String.prototype.addSlashes = function() {
return this.replace(/&/g, '&') /* This MUST be the 1st replacement. */
.replace(/'/g, ''') /* The 4 other predefined entities, required. */
.replace(/"/g, '"')
.replace(/\\/g, '\\\\')
.replace(/</g, '<')
.replace(/>/g, '>').replace(/\u0000/g, '\\0');
}
}
Utilisation: alerte (str.addSlashes ());