StringクラスではPadLeft・PadRightによる左詰め・右詰めは行えますが、文字列の中寄せ(センタリング)を行うメソッドは用意されていません。 以下は文字列のセンタリングを行う例です。 指定された幅で文字列が中央に来るよう左右に空白を入れています。 文字数よりも幅が下回る場合はそのままにします。
文字幅を指定して文字列を中寄せ・センタリングする
using System;
class Sample {
static string Center(string s, int width)
{
var margin = (width - s.Length) / 2;
if (margin <= 0) {
return s;
}
else {
var padding = new String(' ', margin);
return String.Concat(padding, s, padding);
}
}
static void Main()
{
var s = "foo";
Console.WriteLine("<{0}>", Center(s, 5));
Console.WriteLine("<{0}>", Center(s, 6));
Console.WriteLine("<{0}>", Center(s, 10));
Console.WriteLine("<{0}>", Center(s, 20));
Console.WriteLine("<{0}>", Center(s, 0));
}
}
実行結果
< foo > < foo > < foo > < foo > <foo>