Merci pour la discussion, cette méthode fonctionne également (VB) :
Public Function StringCentering(ByVal s As String, ByVal desiredLength As Integer) As String
If s.Length >= desiredLength Then Return s
Dim firstpad As Integer = (s.Length + desiredLength) / 2
Return s.PadLeft(firstpad).PadRight(desiredLength)
End Function
-
Centrage de chaîne() prend deux valeurs en entrée et retourne une chaîne de caractères formatée. formatée.
- Lorsque la longueur de s est supérieure ou égale à deisredLength la fonction renvoie la chaîne originale.
- Lorsque la longueur de s est plus petit que longueur souhaitée il sera rembourré aux deux extrémités.
- Comme l'espacement des caractères est entier et qu'il n'y a pas de demi-espace, nous pouvons avoir une répartition inégale de l'espace. Dans cette implémentation, la plus grande division va à l'extrémité avant.
- La fonction nécessite .NET Framework en raison de PadLeft() et PadRight() .
- Dans la dernière ligne de la fonction, la liaison se fait de gauche à droite, donc firstpad est appliqué, suivi par le longueur souhaitée pad.
Voici la version C# :
public string StringCentering(string s, int desiredLength)
{
if (s.Length >= desiredLength) return s;
int firstpad = (s.Length + desiredLength) / 2;
return s.PadLeft(firstpad).PadRight(desiredLength);
}
Pour faciliter la compréhension, la variable entière firstpad est utilisé. s.PadLeft(firstpad) applique le nombre (correct) d'espaces blancs de tête. L'espace le plus à droite PadRight(longueur souhaitée) a une reliure plus faible se termine par l'application d'espaces blancs de fin de ligne.
50 votes
Je n'ai jamais eu de question sur le formatage des chaînes de caractères à laquelle je n'ai pas pu répondre en consultant cette page : blog.stevex.net/index.php/string-formatting-in-csharp
0 votes
@jcollum : J'adorerais voter votre réponse mais je ne peux pas le faire pour les commentaires.
0 votes
PadLeft fonctionne pour moi ; vérifiez que vous laissez l'espace dans PadLeft(20, 'HERE GOES A SPACE')
0 votes
Que voulez-vous dire par "laisser l'espace". Si vous voulez dire - est-ce que je "coupe" la chaîne, alors non. Cela ne fonctionne toujours pas.