首页 > 解决方案 > 为什么我的字符串右侧没有填充?

问题描述

我正在尝试创建一个构建金字塔的程序。金字塔以阵列形式出现,每层楼都由星号组成,但是,当我尝试用填充物将每层楼居中时,我只会在每个字符串的左侧接收填充物。为什么会这样?

public class Kata
{
  public static string[] TowerBuilder(int nFloors)
  {
    string[] tower = new string[nFloors];
    
    for( int floorNum = 0; floorNum < nFloors; floorNum++ ) {
      int numOfStars = 2 * (floorNum + 1) - 1;
      int maxStars = 2 * nFloors - 1;
      
      char star = '*';  
      string floor = new string( star, numOfStars );
  
      int totalPadding = maxStars - floorNum - 1;
      int padding = totalPadding / 2;
      string centeredFloor = floor.PadLeft(padding).PadRight(padding);

      tower[floorNum] = centeredFloor;
    } 
  
    return tower;
  }
}

标签: c#

解决方案


PadLeft和中的参数PadRight指定最终字符串的总长度,而不是要附加的字符数。你需要使用例如

string centeredFloor = floor.PadLeft(numOfStars+padding)
                            .PadRight(numOfStars+totalPadding);

推荐阅读