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

时间:2011-11-20 09:38:32

标签: c#

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

我需要使用空格将文本“Hello”置于该字符串中心。

我该怎么办?

感谢。

4 个答案:

答案 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);

演示.NETFiddle.

答案 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