Ajoutez d'échappement “\” devant le caractère spécial pour une chaîne de caractères
J'ai une simple requête SQL où je vérifie si la requête correspond à l'un des domaines que j'ai. Je suis en utilisant COMME déclaration pour cette. Un de mes domaine peuvent avoir des caractères spéciaux et donc, la requête de recherche. Donc, je suis à la recherche d'une solution où j'ai besoin d'un échappement "\" devant le caractère spécial.
query = "hello+Search}query"
J'ai besoin de la ci-dessus pour changer de
query = "hello\+Search\}query"
Est-il une façon simple de le faire d'autres que de les rechercher pour chaque caractère spécial séparément et en ajoutant le "\". Parce que si je n'ai pas le caractère d'échappement je reçois le message d'erreur
java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0
Merci d'avance
Quel contexte utilisez-vous sur? Pourquoi utilisez-vous dans une regex? Pouvez-vous montrer le contexte où cette erreur est le cas (veuillez modifier la question).
Aussi s'il vous plaît ajouter la base de données que vous utilisez.
Aussi s'il vous plaît ajouter la base de données que vous utilisez.
OriginalL'auteur Visahan | 2015-09-10
Vous devez vous connecter pour publier un commentaire.
Décider des caractères spéciaux que vous souhaitez échapper et il suffit d'appeler
Vous pouvez garder tous les caractères spéciaux vous permettent dans certains tableau puis de le parcourir et de remplacer les occurrences comme illustré.
Cette méthode remplace toutes les regex méta caractères.
Vous pouvez l'utiliser comme
query=escapeMetaCharacters(query);
Ne pense pas que n'importe quelle bibliothèque vous trouverez ferait rien de plus que cela. Au mieux, il définit une liste complète des specialCharacters.
\\}
OP dit "autre que la recherche de chaque caractère spécial séparément et en ajoutant le \".
En effet, mais il n'y a pas de meilleure option. Je recommande, il continue à suivre de tous les caractères spéciaux qu'il ne s'échappe.
Vous devez init outputString à inputString et pas une Chaîne vide, dans le cas où aucun des caractères spéciaux existe
Encore besoin de ce type de solution en Java en 2018 🙁
OriginalL'auteur Laurentiu L.
Vous devez utiliser
\\
d'introduire un\
dans une chaîne littérale, c'est que vous devez échapper la\
. (Une seule barre oblique est utilisée pour introduire des caractères spéciaux dans une chaîne de caractères: par exemple,\t
est un onglet.)query = "hello\\+Search\\}query"
est ce que vous avez besoin.Il suffit de remplacer
+
avec\\+
, etc.Ou l'utilisation d'une requête préparée. Il doit également être capable de gérer ces caractères spéciaux.
J'ai besoin d'une méthode générique pour identifier tous les caractères spéciaux dans ma requête, "+" en était un exemple. Alors que je cherchais une solution plus élégante que de regarder pour chaque caractère spécial et de le remplacer.
Je suis d'accord. Malheureusement, l'OP n'a pas spécifié de la base de données.
OriginalL'auteur Bathsheba
J'ai dû faire la même chose en javascript. Je suis venu avec ci-dessous la solution. Je pense que ça pourrait aider quelqu'un.
OriginalL'auteur AMahajan