如何在固定长度字符串中对齐字符串

Yoa*_*. B 2 c#

我有一个长度= 100的字符串;

我需要使用空格将文本"Hello"置于该字符串中心.

我能怎么做 ?

谢谢.

nem*_*esv 9

您可以使用字符串填充方法和一点点匹配来计算中心位置:

var stringToCenter = "hello";
var totalLength = 100;

var centeredString = 
     stringToCenter.PadLeft(((totalLength - stringToCenter.Length) / 2) 
                            + stringToCenter.Length)
                   .PadRight(totalLength);
Run Code Online (Sandbox Code Playgroud)

您可以将此逻辑移动到扩展方法中:

public static class StringExtensions{

    public static string CenterString(this string stringToCenter, int totalLength)
    {
        return stringToCenter.PadLeft(((totalLength - stringToCenter.Length) / 2) 
                            + stringToCenter.Length)
                   .PadRight(totalLength);
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以像使用它一样

var centeredString = "hello".CenterString(100);
Run Code Online (Sandbox Code Playgroud)

演示.NETFiddle.


The*_*lus 5

我会在@ nemesv的回答中添加这个作为评论,但我在Stack Overflow上缺乏声誉会阻止它.

该答案中的代码会在右侧比左侧添加更多填充.例如,在该答案的代码中,hello中的"h"出现在第43位而不是第48位.

此修订的代码平衡填充.

var stringToCenter = "hello";
var stringToCenterLength = stringToCenter.Length;
var totalLength = 100;

var centeredString = stringToCenter.PadLeft(((totalLength - stringToCenterLength) / 2) + stringToCenterLength).PadRight(totalLength);
Run Code Online (Sandbox Code Playgroud)