如何在固定长度字符串中对齐字符串
本文关键字:字符串 对齐 | 更新日期: 2023-09-27 18:15:10
我有一个长度= 100的字符串;
我需要将文本"Hello"居中,在该字符串中使用空白。
我该怎么办?
谢谢。
您可以使用字符串填充方法和一个小匹配来计算中心位置:
var stringToCenter = "hello";
var totalLength = 100;
var centeredString =
stringToCenter.PadLeft(((totalLength - stringToCenter.Length) / 2)
+ stringToCenter.Length)
.PadRight(totalLength);
您可以将此逻辑移动到扩展方法中:
public static class StringExtensions{
public static string CenterString(this string stringToCenter, int totalLength)
{
return stringToCenter.PadLeft(((totalLength - stringToCenter.Length) / 2)
+ stringToCenter.Length)
.PadRight(totalLength);
}
}
你可以用
var centeredString = "hello".CenterString(100);
演示.NETFiddle。
我本来想把这个作为评论添加到@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);
您可以计算字符串长度,然后应用适当的填充:
"".PadLeft()
或"".PadRight()
我已经扩展了@nemesv的答案,以包含一个接受填充字符的过载,因此您可以得到如下内容:
################################# Hello World! #################################
代码:
using System;
public class Program
{
public void Main()
{
Console.WriteLine(" Hello World! ".CenterString(80, '#'));
}
}
public static class StringExtensions
{
public static string CenterString(this string stringToCenter, int totalLength)
{
return stringToCenter.PadLeft(
((totalLength - stringToCenter.Length) / 2)
+ stringToCenter.Length).PadRight(totalLength);
}
public static string CenterString(this string stringToCenter,
int totalLength,
char paddingCharacter)
{
return stringToCenter.PadLeft(
((totalLength - stringToCenter.Length) / 2) + stringToCenter.Length,
paddingCharacter).PadRight(totalLength, paddingCharacter);
}
}
例子:.NETFiddle