web-dev-qa-db-fra.com

Comment ajouter des barres obliques à une chaîne en Javascript?

Juste une chaîne. Ajoutez-y chaque fois qu'il y a un seul devis.

34
TIMEX

replace fonctionne pour la première citation, vous avez donc besoin d'une petite expression régulière:

str = str.replace(/'/g, "\\'");
60
Kobi

La fonction JavaScript suivante gère ', ",\b,\t,\n,\f ou\r l'équivalent de la fonction php addlashes ().

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, '\\"');
}
29
Somnath Muluk

Une chaîne peut être échappée de manière complète et compacte à l'aide de JSON.stringify. Il fait partie de JavaScript à partir de ECMAScript 5 et est pris en charge par les principales versions de navigateur plus récentes.

str = JSON.stringify(String(str));
str = str.substring(1, str.length-1);

En utilisant cette approche, également des caractères spéciaux comme l'octet nul, les caractères unicode et les sauts de ligne \r et \n sont correctement échappés dans une instruction relativement compacte.

20
daluege

Une réponse que vous n'avez pas demandée peut être utile, si vous effectuez le remplacement en vue d'envoyer la chaîne dans alert () - ou toute autre chose où un seul caractère de citation pourrait vous tromper.

str.replace("'",'\x27')

Cela remplacera tous les guillemets simples par le code hexadécimal pour les guillemets simples.

4
lance

Pour être sûr, vous devez non seulement remplacer les guillemets simples, mais aussi ceux déjà échappés:

"first ' and \' second".replace(/'|\\'/g, "\\'")
4
Mic
var myNewString = myOldString.replace(/'/g, "\\'");
3
womp
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: \'
2
Vivin Paliath
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, '&lt;')
             .replace(/>/g, '&gt;').replace(/\u0000/g, '\\0');
        }
}

Utilisation: alert (str.addSlashes ());

réf: https://stackoverflow.com/a/9756789/3584667

2