La méthode .NET String.Format permet-elle de placer une chaîne à une position fixe dans une chaîne de longueur fixe.
"String Goes Here" "String Goes Here" "String Goes Here"
Comment cela se fait-il en utilisant .NET?
Edit - J'ai essayé Format / PadLeft / PadRight à mort. Ils ne travaillent pas. Je ne sais pas pourquoi. J'ai fini par écrire ma propre fonction pour ce faire.
Modifier - J'ai fait une erreur et j'ai utilisé deux points au lieu d'une virgule dans le spécificateur de format. Doit être "{0,20}".
Merci pour toutes les réponses excellentes et correctes.
Réponses:
Cela vous donnera exactement les chaînes que vous avez demandées:
la source
,
au lieu de:
comme dans tous les autres cas de formatage?La première et la dernière, au moins, sont possibles en utilisant la syntaxe suivante:
la source
À partir de Visual Studio 2015, vous pouvez également le faire avec des chaînes interpolées (c'est une astuce de compilation, donc peu importe la version du framework .net que vous ciblez).
la source
On vous a montré
PadLeft
etPadRight
. Cela comblera les manquantsPadCenter
.Note à moi-même: n'oubliez pas de mettre à jour votre propre CV: "Un jour, j'ai même corrigé le code de Joel Coehoorn!" ;-D -Serge
la source
essaye ça:
pour le centre, obtenez la longueur de la chaîne et faites padleft et padright avec les caractères nécessaires
la source
String.Format("{0,-length}", something)
ne seront pas compilées.Merci pour la discussion, cette méthode fonctionne également (VB):
Voici la version C #:
Pour faciliter la compréhension, le premier pavé de variable entière est utilisé. s.PadLeft (firstpad) applique le (nombre correct de) premiers espaces blancs. Le PadRight le plus à droite (la longueur souhaitée) a une liaison inférieure se termine en appliquant des espaces blancs à la fin.
la source
Voici une version VB.NET que j'ai créée, inspirée de la réponse de Joel Coehoorn, de l'édition d'Oliver et du commentaire de shaunmartin:
Ceci est configuré comme une extension de chaîne, à l'intérieur d'un module public (la façon dont vous faites les extensions dans VB.NET, un peu différent de C #). Mon léger changement est qu'il traite une chaîne nulle comme une chaîne vide et qu'il remplit une chaîne vide avec la valeur de largeur (répond à mes besoins particuliers). Espérons que cela se convertira facilement en C # pour tous ceux qui en ont besoin. S'il y a une meilleure façon de référencer les réponses, les modifications et les commentaires que j'ai mentionnés ci-dessus, qui ont inspiré mon message, faites-le moi savoir et je le ferai - Je suis relativement nouveau dans la publication et je ne pouvais pas comprendre laisser un commentaire (peut-être pas encore assez de représentants).
la source
J'ai posté un article CodeProject qui peut être ce que vous voulez.
Voir: AC # way pour la mise en forme indirecte de la largeur et du style.
Fondamentalement, c'est une méthode, FormatEx, qui agit comme String.Format, sauf qu'elle permet un modificateur d'alignement centré.
Signifie centrer la valeur de varArgs [0] dans un champ de 10 caractères, pencher à droite si un espace de remplissage supplémentaire est requis.
Signifie centrer la valeur de varArgs [0] dans un champ large de 10 caractères, pencher à gauche si un espace de remplissage supplémentaire est requis.
Edit: en interne, c'est une combinaison du PadCenter de Joel avec une analyse pour restructurer le format et varArgs pour un appel à String.Format qui fait ce que vous voulez.
-Jesse
la source
il semble que vous vouliez quelque chose comme ça, qui vous placera à un point fixe dans une chaîne de longueur constante:
notez que cela aura des problèmes si mystring.length + leftbuffer dépasse la longueur totale
la source
la source