6
votes

Échapper aux guillemets simples dans une chaîne

jsp: xxx

Le résultat est (JavaScript): xxx

SyntaxExError non capturé: identifiant inattendu

Comment remplacer ce devis unique avec \ ' pour éviter une erreur JavaScript?


7 commentaires

Utilisez-vous un cadre Web?


Quelle erreur obtenez-vous quand vous faites cela?


@Samiam j'ai mis à jour la question


Vous devez également encoder les citations doubles, les nouvelles lignes, les onglets et de nombreuses autres choses.


@Juanmendes non, je ne le fais pas. J'ai besoin d'échapper à des citations simples. Ceci est une chaîne en ligne sans aucune pause de ligne


@Vitaliypetrychuk oui vous faites, comment pouvez-vous contrôler ce qui est dans la chaîne? Vous devriez être en sécurité et échapper correctement à tout ce qui a besoin de s'échapper, n'ajoutez pas de mauvaises hypothèses au code


@Juanmendes désolé, tu as raison, mon mauvais


3 Réponses :


-1
votes

cherchez-vous simplement à appliquer votre chaîne afin que vous ayez réellement un \ code> suivi d'un ' code>?

var str2 = str1.replace("'","\\'"); 


2 commentaires

Les données ne sont pas codées en papier. Je l'extrait de la base de données et je dois remplacer des guillemets simples


Je ne pense pas que ce soit une chaîne codée à codes papier, l'OP est inquiet pour



6
votes

Utilisez EscapeecMascript Méthode de Apache Commons Lang Package:

échappe à toutes les valeurs qu'il trouve dans leur formulaire de chaîne Ecmascript. Offres Correctement avec des guillemets et des caractères de contrôle (onglet, backslash, cr, ff, etc.). Donc, un onglet devient les caractères '\\' et 't' .

La seule différence entre les chaînes Java et les chaînes Ecmascript est qu'en Ecmascript, une citation unique et une barre oblique ( / ) s'échappe.

Exemple:

String d'entrée: il n'a pas dit: "STOP!"

chaîne de sortie: il n'a pas dit, \ "STOP! \"


1 commentaires

Certainement d'une surkillée, car elle convertit également tout symbole alphabétique non latin dans sa séquence unicode ( "кириллица" -> "\\ u043a \\ u0438 \\ u0443b \\ u043b \\ u0438 \\ u0446 \\ u 0430 ").



3
votes

N'oubliez pas que vous avez également besoin d'encoder les citations doubles, les nouvelles lignes, les onglets et de nombreuses autres choses. Une façon de le faire consiste à utiliser org.apache.commons.lang.stringescapesutils xxx

entrée.txt

Voici quelques "texte" que Je voudrais être "échappé" pour JavaScript. Je vais essayer quelques caractères spéciaux ici: \ "

sortie

voici quelque chose \ "text \" que \ r \ n \ 'd aime être \ "échappé \" pour JavaScript. \ NI \' ll essayer quelques caractères spéciaux ici: \ \ "


5 commentaires

Il n'y a plus de méthode plus.


@Vison renommé en 3.1, était là jusqu'à 2.6


Pourquoi quelqu'un a-t-il descendu cela? Il est correct si vous utilisez org.apache.commons 2.6 (la version que nous avons été bloquée au travail). En outre, cette question était fermée liée à une réponse qui dit exactement la même chose que j'ai dit ...


Je ne sais pas qui vous a clôturé, mais je pense personnellement que votre réponse doit être considérée comme au moins pour la compatibilité à l'envers. Je ne vaut pas la note négative.


@Vision merci pour l'uppotation compensatoire :)