我有一个长度为100的字符串;
我需要使用空格将文本“Hello”置于该字符串中心。
我该怎么办?
感谢。
答案 0 :(得分:9)
您可以使用字符串padding methods和一点点匹配来计算中心位置:
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);
答案 1 :(得分: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);
答案 2 :(得分:0)
您可以计算字符串长度,然后通过以下方式应用适当的填充:
"".PadLeft()
或"".PadRight()
答案 3 :(得分:0)
我扩展了@ 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