您可以使用字符串填充方法和一点点匹配来计算中心位置:
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)
我会在@ 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)