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 :

Chaîne de caractères avec retours à la ligne et caractères spéciaux "inline" [Débutant]


Sujet :

C#

  1. #1
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut Chaîne de caractères avec retours à la ligne et caractères spéciaux "inline"
    Bonjour,

    Question de gros débutant.

    Comment stocker de façon lisible et facile à maintenir une chaîne littérale dans du code C# ?

    Je m'explique.

    Par exemple, j'ai une chaîne de caractères qui doit contenir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    TEXTE MIS EN FORME
    AVEC RETOURS A LA LIGNE
    	ET TABULATION
        ET ESPACES
    Des caractères "spéciaux' /@\ youpi
    Actuellement, si je veux stocker ça dans mon programme, c'est la croix et la bannière :
    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string myString = "TEXTE MIS EN FORME\nAVEC RETOURS A LA LIGNE\n\tET TABULATION\n    ET ESPACES\nDes caractères \"spéciaux' {1} /@\\ youpi";
    Et ensuite, à modifier (ajouter une ligne par exemple, refaire l'indentation, etc.) c'est l'horreur totale.
    Du coup je passe plus de temps à remettre en forme ma chaîne de caractères dans un sens ou dans l'autre qu'à faire la modification réelle.

    En PHP par exemple, il y a une instruction (me souvient plus tout à fait, mais grossomodo, de très loin, ça ressemble à ça :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $myString = EOD___
    TEXTE MIS EN FORME
    AVEC RETOURS A LA LIGNE
    	ET TABULATION
        ET ESPACES
    Des caractères "spéciaux' /@\ youpi
    ___EOD;

    Ou comme la balise CDATA en XML.

    J'ai cherché, mais pas trouvé

    Il reste la solution pas vraiment pratique qui consiste à passer par un fichier texte, en ressource ou non. Mais c'est vraiment pas pratique à utiliser, et niveau performances, je suis pas certain que ce soit hyper judicieux...

    Et là, franchement, j'en peux plus :
    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string query = string.Format("<?xml version=\"1.0\"?><request><query><tables><table tablename=\"RepUser\" id=\"{0}\"><table tablename=\"Contact\"><table tablename=\"ContactParticipant\"><table tablename=\"Person\"><table tablename=\"Company\"></table></table></table></table></table></tables><fields><field tablename=\"Contact\" fieldname=\"ExternalID\"/><field tablename=\"Contact\" fieldname=\"Location\"/><field tablename=\"Contact\" fieldname=\"ExternalSynchroDate\"/><field tablename=\"Contact\" fieldname=\"Date\"/><field tablename=\"Contact\" fieldname=\"Time\"/><field tablename=\"Contact\" fieldname=\"EndDate\"/><field tablename=\"Contact\" fieldname=\"EndTime\"/><field tablename=\"Contact\" fieldname=\"Subject\"/><field tablename=\"Contact\" fieldname=\"Text\"/><field tablename=\"Contact\" fieldname=\"Private\"/><field tablename=\"Contact\" fieldname=\"Upd\"/><field tablename=\"Contact\" fieldname=\"UpdTime\"/><field tablename=\"Contact\" fieldname=\"Contact\"/><field tablename=\"Person\" fieldname=\"FirstName\"/><field tablename=\"Person\" fieldname=\"LastName\"/><field tablename=\"Person\" fieldname=\"E-mail1\"/><field tablename=\"Person\" fieldname=\"Tel1\"/><field tablename=\"Person\" fieldname=\"Tel2\"/><field tablename=\"Company\" fieldname=\"Company\"/></fields><condition><lop value=\"or\"><lop value=\"and\"><cond tablename=\"Contact\" fieldname=\"Upd\" op=\">=\" value=\"{1}\"/><cond tablename=\"Contact\" fieldname=\"UpdTime\" op=\">=\" value=\"{2}\"/></lop><lop value=\"and\"><cond tablename=\"Contact\" fieldname=\"New\" op=\">=\" value=\"{1}\"/><cond tablename=\"Contact\" fieldname=\"NewTime\" op=\">=\" value=\"{2}\"/></lop></lop></condition></query></request>", user.Id, LastSync.ToString("dd.MM.yyyy"), LastSync.ToString("hh:mm:ss.fff"));
    On ne jouit bien que de ce qu’on partage.

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    PS : Y'a bien les chaînes verbatim. Mais ça m'oblige quand même à échapper certains caractères (le " au moins, ce qui pour un fichier XML représente beaucoup d'échappements). J'aimerais une méthode plus radicale avec une balise de début et de fin, et la possibilité de mettre absolument tout ce que je veux à l'intérieur.
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Bon, face à tant d'enthousiasme, je vais utiliser des ressources...
    On ne jouit bien que de ce qu’on partage.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Points : 674
    Points
    674
    Par défaut
    Et sinon, en utilisant les litéraux.. Bon faudra just échapper les ""...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    	string s_text = @"salut '@
    	les
    		""gens""
    		";
     
    	Console.WriteLine(s_text);
    En sortie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    salut '@
        les
            "gens"

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

Discussions similaires

  1. [Toutes versions] Chaîne de caractères avec retours à la ligne
    Par Z20500 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/02/2013, 19h46
  2. String avec retour à la ligne tous les '100' caractères
    Par Portugues13 dans le forum Débuter avec Java
    Réponses: 16
    Dernier message: 05/06/2012, 17h16
  3. Caractère de retour à la ligne.
    Par Pari dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 18/03/2009, 09h59
  4. Réponses: 2
    Dernier message: 16/11/2007, 11h33
  5. Concatérner chaine avec retour à la ligne
    Par nebule dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/11/2004, 11h55

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