c# - 为什么我的字符串右侧没有填充?
问题描述
我正在尝试创建一个构建金字塔的程序。金字塔以阵列形式出现,每层楼都由星号组成,但是,当我尝试用填充物将每层楼居中时,我只会在每个字符串的左侧接收填充物。为什么会这样?
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;
}
}
解决方案
PadLeft
和中的参数PadRight
指定最终字符串的总长度,而不是要附加的字符数。你需要使用例如
string centeredFloor = floor.PadLeft(numOfStars+padding)
.PadRight(numOfStars+totalPadding);
推荐阅读
- react-native - 如何创建自定义动画切换背景颜色反应原生
- javascript - Alpine JS 使用 window.setInterval() 函数以间隔更改图像
- python-3.x - Cloud scheduler 中要给出的 HTTP URL 是什么
- javascript - How can I rewrite modal window jQuery into native Javascript?
- javascript - 将父元素设置为隐藏溢出以切断动画但继续显示子元素
- sql - 获取聚合值和数据
- codenameone - 当我尝试打开侧边菜单时出现异常
- php - Codeigniter4 模板性能
- android-studio - 在 Android Studio 中解析 tmx 和 JSON 文件时出错
- c++ - 给 n。显示一个三角形,其中 n 颗星的边为空