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 :

saut de ligne performant


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Novembre 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 54
    Par défaut saut de ligne performant
    Bonjour,

    Je récupère une chaine de caractère avec des sauts de lignes et j'ai envie de l'afficher dans mon fichier texte à la place que je veux. Le problème est que comme y a des sauts de lignes bah le retour à la ligne n'est pas sur la même colonne que le début de mon affichage.

    Exemple: je récupère un string "adresse" que je veux afficher

    Nom : Lambert Prénom : Jean
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    out1.WriteLine(prenom);
    Adresse: 5 rue de la liberté
    92000, Antony
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    out1.WriteLine(Adresse);
    Alors que moi je veux

    Adresse: 5 rue de la liberté
    -----------92000, Antony

    PS: ----------- veut dire espace vide

    Merci pour vos futur réponses.

  2. #2
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 674
    Par défaut
    Bonjour,

    Je ne pense pas qu'il y ai d'automatisme tout fait pour ça , par contre tu peux très facilement quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                string entete = "Adresse :";
                Console.WriteLine(entete);
                Console.WriteLine(new String(' ',entete.Length) + "13 , rue du Code");
    De cette façon , la ligne suivante sera toujours indenté la ou est l’entête.

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Novembre 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 54
    Par défaut
    et si "13 , rue du Code" est un variable genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String addr = "13, rue du code
    75003 bidule"
    sachant que moi je ne connais pas à la base la valeur de addr, que je récupère d'un autre objet et que je veux quand même que le 75003 bidule soit juste au dessus de 13 et non à la colonne 0.

    merci

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Par défaut
    Bonjour,

    Un split sur ta variable adresse afin de récupérer un tableau de tableau de string pour chaque ligne, et après tu applique la méthode indiqué par PixelJuice

    Il y a quand même une méthode plus lisible que l'allocation de string, PadLeft

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Novembre 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 54
    Par défaut
    Bonjour,

    PadLeft est géniale !!

    Ceci dit je l'ai bidouillé comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addr.replace(Environement.NewLine, Environement.NewLine +"                                            " );

  6. #6
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 197
    Billets dans le blog
    1
    Par défaut
    Histoire de refactoriser le code afin que ce soit globalement plus lisible, j'aurais fait un truc du genre :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    using System;
    using System.Text;
     
    namespace SandBox
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.Write(GetBlock("Prénom", "Toto"));
                Console.Write(GetBlock("Nom", "La Praline"));
                Console.Write(GetBlock("Adresse", "13, chemin des Herbes Hautes\n12345 La Cambrousse\nFrance"));
                Console.ReadKey();
            }
     
            static string GetBlock(string header, string data)
            {
                StringBuilder res = new StringBuilder();
                bool headershown = false;
                string[] datarows = data.Split('\n');
                foreach (string row in datarows)
                {
                    if (!headershown)
                    {
                        res.AppendFormat("{0} : {1}\n", header, row);
                        if (datarows.Length > 1)
                        {
                            header = new string(' ', header.Length + 3);
                            headershown = true;
                        }
                    }
                    else
                    {
                        res.AppendFormat("{0}{1}\n", header, row);
                    }
                }
                res.AppendLine();
                return res.ToString();
            }
        }
    }

    PS : Aussi, limiter autant que possible l'allocation et la manipulation de strings : c'est très consommateur en ressources.
    D'où l'utilisation de AppendFormat plutôt que de PadLeft, ainsi que la création une fois pour toute du placeholder, et uniquement s'il y a plusieurs lignes à afficher.

  7. #7
    Membre confirmé
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Novembre 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 54
    Par défaut
    Bien codé.
    Merci StringBuilder.

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

Discussions similaires

  1. Saut de ligne sans <br/>
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 21/06/2007, 12h21
  2. [Saut de ligne] Problèmes bizarre
    Par gandalf_le_blanc dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 06/04/2004, 15h06
  3. Nombre de sauts de ligne dans un String
    Par Johnbob dans le forum ASP
    Réponses: 7
    Dernier message: 03/03/2004, 16h33
  4. Lecture de saut de ligne...
    Par Garion dans le forum C
    Réponses: 5
    Dernier message: 13/02/2004, 12h42
  5. [JTextPane] saut de ligne...
    Par neric dans le forum Composants
    Réponses: 2
    Dernier message: 21/01/2004, 16h01

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