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 :

Formattage de String


Sujet :

C#

  1. #1
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut Formattage de String
    Salut

    Comment faire , le plus "proprement" possible formatter un String de ce type :

    "Test "
    C est a dire toujours avoir la meme longueur (par exemple 15 caracteres) mais sans pour autant si le string depart est plus grand ne pas depasser 15 caracteres ?

    Thx

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Je ne vois pas vraiment où est le problème
    Il suffit de jouer avec les fonctions de base pour la manipulation des chaîne de caractères.
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string maChaine = "test";
    maChaine = (maChaine.Length > 15) ? maChaine.Substring(0, 15) : maChaine + new string(' ', 15 - maChaine.Length);
    Ou alors j'ai mal compris la question.

  3. #3
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    euh... a première vue je dirais de passer par un char array.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char[] temp = new char[MaxLength];
    temp = InputString.ToCharArray(0,MaxLength);
    OutputString = temp.ToString();
    Mais il est aussi possible de faire un "String.PadRight(,)";

  4. #4
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Salut,
    tu as les méthodes PadRight(int) et PadLeft() pour remplir l'espace manquant, et Remove pour enlever.

    Donc tu peux faire par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    static char caractereDeRemplissage = '%'.
     
    string FormatString(string chaine)
    {
        if(string.IsNullOrEmpty(chaine))
        {
            return string.Empty.PadLeft(15, caractereDeRemplissage);
        }
     
        return chaine.Length > 15 ? chaine.Remove(15) : chaine.PadRight(15, caractereDeRemplissage );
    }

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Tu peux créer une petite methode d'extension TakeExactly(int) qui contient le code pour faire ça, ensuite c'est juste un appel de fonction tout bête. ça devrait simplifier l'utilisation sans avoir à copier/coller.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Merci tlm

    J aurais esperer pouvoir le faire en une seul instruction ....
    J avais trouve cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String o = String.Format("{0, -15}", t);
    Qui permet de remplir de caractere vide , mais ne limite pas 15 caracteres

    ++

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/01/2013, 14h46
  2. Formattage de version de logiciel (formattage de string)
    Par stephane.julien dans le forum C#
    Réponses: 3
    Dernier message: 19/10/2007, 07h54
  3. URGENT: retour de string
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 09h47
  4. Réponses: 2
    Dernier message: 05/06/2002, 12h29
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23

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