310 votes

Insertion d'un caractère de tabulation dans un texte à l'aide de C#

Je suis en train de construire une application où je dois capturer plusieurs valeurs et construire un texte avec elles : Name , Age etc.

La sortie sera un texte brut dans un fichier TextBox .

J'essaie de faire en sorte que ces informations apparaissent dans un genre de columns J'essaie donc de les séparer avec tab pour le rendre plus clair.

Par exemple, au lieu d'avoir :

Ann 26
Sarah 29
Paul 45

Je voudrais qu'il apparaisse comme :

Ann onglet 26 Sarah onglet 29 Paul onglet 45

Un conseil sur la façon de insert les onglets dans mon texte ?

1 votes

Un mot d'avertissement..... si la longueur du champ du nom est trop importante, vous ne parviendrez toujours pas à les aligner. "Ann" ne comporte que 3 caractères. Une simple tabulation ajoutée à "Ann" pourrait faire apparaître le ## avant la fin de "Jeremiah". Je suggérerais d'analyser par le nombre de caractères. "Fractionnez" par espace, ajoutez des espaces au premier membre jusqu'à 12 caractères, puis ajoutez "26". Si vous avez un nom qui peut être plus long que 12, ajustez...

0 votes

Je viens de lire le commentaire de KeachyPeenReturns après avoir posté une solution. Sa remarque est correcte mais sa solution est imparfaite. La MEILLEURE réponse est déjà incorrecte. Veuillez prendre le temps de lire ma solution et de mettre à jour le statut (MEILLEURE réponse) pour cette question. Normalement, je ne poste pas ce type de commentaire mais la question est très ancienne.

525voto

DShook Points 5361

Essayez d'utiliser le \t dans vos chaînes de caractères

478voto

Dan R Points 1852

Hazar a raison avec son \t . Voici la liste complète des caractères d'échappement pour C# :

\' pour une seule citation.

\" pour un guillemet double.

\\ pour un backslash.

\0 pour un caractère nul.

\a pour un caractère d'alerte.

\b pour un retour en arrière.

\f pour une alimentation par formulaire.

\n pour une nouvelle ligne.

\r pour un retour chariot.

\t pour un onglet horizontal.

\v pour un onglet vertical.

\uxxxx pour une valeur hexagonale d'un caractère unicode (par ex. \u0020 ).

\x est la même chose que \u mais vous n'avez pas besoin de zéros non significatifs (par ex. \x20 ).

\Uxxxxxxxx pour une valeur hexagonale de caractère unicode (forme plus longue nécessaire pour générer des substituts).

9 votes

Où avez-vous trouvé ces données ? J'aimerais le savoir pour ma référence.

1 votes

@QueueueHammer rom Jon Skeet lui-même, il semble... devblogs.microsoft.com/csharpfaq/

79voto

david valentine Points 1208

Il peut également être utile d'utiliser String.Format par exemple

String.Format("{0}\t{1}", FirstName,Count);

17 votes

C'est la meilleure réponse car le code parle plus longtemps que les one liners et les longues explications.

5voto

Meneliki Points 31

Peut-être que je fais quelque chose de mal mais \t met juste des petits carrés pour moi. J'utilise un Label ... doit-il s'agir d'une zone de texte enrichi ou autre ?

EDIT : Oui, apparemment c'est le cas.

2voto

AminSaghi Points 3844

Il existe plusieurs façons de procéder. La plus simple consiste à utiliser \t dans votre texte. Cependant, il est possible que \t ne fonctionne pas dans certaines situations, comme PdfReport paquet nuget.

8 votes

Il serait utile d'ajouter des informations sur la manière d'ajouter un onglet dans le cas où \t ne fonctionne pas ;)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X