2012-09-05 5 views
1

J'ai une chaîne comme ceRetirez guillemet simple fuite

This is\' it 

Je voudrais qu'il ressemble à ce

This is' it 

rien que je ne semble fonctionner

> "This is\' it".replace(/\\'/,"'"); 
'This is\' it' 
> "This is\' it".replace("'",/\\'/); 
'This is/\\\\\'/ it' 
> "This is\' it".replace("\'","'"); 
'This is\' it' 
> "This is\' it".replace("'","\'"); 
'This is\' it' 

MISE À JOUR : C'est un peu difficile d'envelopper ma tête mais j'ai eu mon exemple de chaîne à l'intérieur d'un tableau quelque chose comme.

> ["hello world's"] 
[ 'hello world\'s' ] 

Il se fait automatiquement comme ceci:

> var a = ["hello world's"] 
undefined 
> a 
[ 'hello world\'s' ] 
> a[0] 
'hello world\'s' 
> console.log(a[0]) 
hello world's 
undefined 
> console.log(a) 
[ 'hello world\'s' ] 
undefined 
> 
+6

'console.log (" Ceci est \ 'il ")' renvoie 'C'est' ça 'pour moi. – Blender

Répondre

6

Aucun de vos chaînes de test contiennent effectivement des barres obliques inverses. La chaîne que vous entrez à chaque fois est la suivante: This is' it car la barre oblique inverse échappe à la citation unique.

Votre première solution (basée sur la regex) est presque parfaite, il manque juste le modificateur global /\\'/g pour remplacer toutes les correspondances, pas seulement la première. Pour voir cela en action, essayez ce qui suit:

> "This is\\' it" 
"This is\' it" 
> "This is\\' it".replace(/\\'/g,"'"); 
"This is' it" 
+0

'" Ceci est \\ 'it ".replace (/ \\'/g," '");' retourne '' Ceci est \ 'it''. Ma chaîne est en fait à partir de JSON et est '' This is \ 'it''. – ThomasReggi

+0

Si c'est la chaîne JSON, alors il devrait être déconnecté automatiquement juste en analysant le JSON. ''Ceci est \' il '' est une chaîne entre guillemets simples avec une seule citation à l'intérieur, la barre oblique inverse" disparaît "quand la chaîne est lue. –

+0

oui vous avez raison, j'ai mis à jour ma question et tout est logique maintenant. – ThomasReggi

0

Donnez ce un coup:

"This is\' it".replace(/\\(.?)/g, function (s, n1) { 
    switch (n1) { 
    case '\\': 
     return '\\'; 
    case '0': 
     return '\u0000'; 
    case '': 
     return ''; 
    default: 
     return n1; 
    }); 

Extrait de http://phpjs.org/functions/stripslashes:537

0

Je pense que la première option de votre question fonctionne. Lorsque vous le mentionnez comme une chaîne dans JavaScript, vous devez échapper le \ afin qu'il soit lu comme une chaîne plutôt qu'un caractère spécial. Cochez cette case jsFiddle: http://jsfiddle.net/T7Du4/2/

Questions connexes