IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Fonction string replace


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 351
    Par défaut Fonction string replace
    Bonjour,
    J'ai longtemps développé en VB et je débute en C#.

    j'ai une chaine de caractères que je recherche dans une base de données tout se passe bien sauf quand il y a une apostrophe dans la chaine de caractères.
    sous VB j'ajoutais un caractère d'echapement "\" avec la fonction replace.

    Ici quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_NomFicSeul = str_NomFicSeul.Replace("'", "\'");
    ça ne replace pas.
    quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_NomFicSeul = str_NomFicSeul.Replace("a", "\'");
    la fonction ajoute bien un \ devant le a.

    quelqu'un peut m'expliquer pourquoi ?

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 250
    Par défaut
    Dans une chaine de caractère en VB, le caractère \ n'a aucune signification, c'est un caractère banal.

    En C#, langage de la famille des C, le caractère \ a une signification très particulière puisqu'il s'agit du caractère d'échappement.

    Si tu le rajoute dans une chaine, il ne sera pas traité comme caractère, mais bien comme l'échappement. Si tu veux qu'il soit traité comme caractère, tu as 2 solutions :


  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 351
    Par défaut
    Merci de ton aide,
    tu as raison j'avais essayé "\\'" et l'espion qui m'affichait \\' alors que la chaine contient bien \'
    C'est la même chose avec @"\'"

    Mais ça n'a pas résolu mon bug.

    Ma string c'est "Babay's" je cherche si elle existe dans un recordset avec cette commande.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lig_Fic = dst_Rep.Tables["Fic"].Select("FicNom Like '" + str_NomFicSeul + "' ");
    comme il y a un <'> dans la chaine ça ne fonctionne pas.
    j'essaie donc d'ajouter le <\> devant le <'> dans ma chaine de caractère mais j'ai toujours une erreur :

    System.Data.SyntaxErrorException*: 'Erreur de syntaxe : opérande manquant après l'opérateur 's'.'

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 351
    Par défaut
    J'ai trouvé en fait dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lig_Fic = dst_Rep.Tables["Fic"].Select("FicNom Like '" + str_NomFicSeul + "' ");
    le caractère ' doit être échapé par lui même.

    c'est donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_NomFicSeul = str_NomFicSeul.Replace("'", "''");
    Qui a résolu le pb.

    Je passe au suivant c'est les crochets maintenant qui coincent.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 351
    Par défaut
    En fait j'ai contourné le probléme et remplaçant le Like par un =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lig_Fic = dst_Rep.Tables["Fic"].Select("FicNom = '" + str_NomFicSeul + "' ");

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplacer des caractères avec la fonction string.replace
    Par chtom dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/12/2008, 16h43
  2. [LG] Equivalent de la fonction VB "Replace"
    Par avigeilpro dans le forum Langage
    Réponses: 4
    Dernier message: 05/10/2005, 18h18
  3. [String] pb fonction String[] split(String regex)
    Par Kyti dans le forum Langage
    Réponses: 6
    Dernier message: 05/04/2005, 13h06
  4. [string]replace
    Par nenoeil dans le forum Langage
    Réponses: 6
    Dernier message: 12/07/2004, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo