C# で固定スペースを使用して文字列をフォーマットする

Syed Hassan Sabeeh Kazmi 2023年10月12日
  1. C# の固定スペースで String.Format メソッドを使用して文字列をフォーマットする
  2. C# の固定スペースで $–文字列補間を使用して文字列をフォーマットする
  3. C# の固定スペースで String.PadLeftString.PadRight を使用して文字列をフォーマットする
C# で固定スペースを使用して文字列をフォーマットする

このチュートリアルでは、C# を使用して、さまざまな方法を使用して固定スペースで文字列を自由にフォーマットする方法を学習します。 .NET 環境は、文字列を固定スペースに揃えるための String.Format などの静的メソッドを備えています。

C# の固定スペースで String.Format メソッドを使用して文字列をフォーマットする

このメソッドは、オブジェクト、変数、または式の値を文字列に変換し、指定された形式に基づいてそれらを別の文字列に挿入します。String.Format は、フォーマット文字列で始まり、その後に 1つ以上のオブジェクトが続きます。

{int, int} 構文は挿入文字列を表し、結果文字列に挿入される文字列の幅を定義できます。たとえば、{0, 6} 構文は 6 文字の文字列を表します。

C# では、文字列はデフォルトでフィールド内で右揃えになり、フィールド幅の前に負の符号 {0, -6} を付けて左揃えにします。このメソッドの角かっこはオプションの要素を示し、フォーマット文字列には {index[,alignment][:formatString]} 構文があります。

フォーマット文字列のインデックスは、メソッドの引数リストに属するオブジェクトに対応しており、このインデックスは文字列の先頭から順番に処理できます。

コード:

using System;

public class formatString {
  public static void Main(string[] args) {
    string prtTxtAlg = "I like burgundy.";

    string txtFmtRight = String.Format("{0,30}", prtTxtAlg);

    string txtFmtCenter = String.Format(
        "{0,-30}",
        String.Format("{0," + ((30 + prtTxtAlg.Length) / 2).ToString() + "}", prtTxtAlg));

    string txtFmtLeft = String.Format("{0,-30}", prtTxtAlg);

    Console.WriteLine(txtFmtRight);
    Console.WriteLine(txtFmtCenter);
    Console.WriteLine(txtFmtLeft);
  }
}

出力:

           I like burgundy.
     I like burgundy.
I like burgundy.

C# の固定スペースで $–文字列補間を使用して文字列をフォーマットする

$ は、補間式を含む補間文字列として識別されます。 $ - string が結果文字列に解決されると、補間式を含むアイテムが式の結果の文字列表現に置き換えられます。

{<interpolationExpression>[,<alignment>][:<formatString>]} 構文は文字列を表し、その構造はその補間式を表します。補間文字列の主な要素は <interpolationExpression> で、角括弧で囲まれた 2つの要素 <alignment><formatString> は省略可能です。

interpolationExpression はフォーマットされる結果を生成し、alignment は文字列を右または左に整列するための正または負の値を表し、formatString は式の結果のタイプによってサポートされます。

一般に、複合フォーマットをサポートするメソッドの呼び出しが必要ですが、複合フォーマットのメソッドサポートを必要とせずに、このメソッドを使用して任意の文字列を使用できます。C# では、補間式に式を導入して引数リストではなく文字列に挿入することにより、補間文字列の読み取りとコーディングを容易にします。

理解しやすさとパフォーマンスの向上に加えて、$-文字列補間メソッドは、複合形式のメソッドの呼び出しを置き換えるだけでなく、文字列の連結操作で使用できます。サポートされている連結操作により、より正確で読みやすい C# コードを生成できます。

コード:

using System;

public class formatString {
  public static void Main(string[] args) {
    string value = "I like burgundy.";

    string txtRight = $"{value,25}";
    string txtCenter = $"{value,20}";
    string txtLeft = $"{value,-10}";

    Console.WriteLine(txtRight);
    Console.WriteLine(txtCenter);
    Console.WriteLine(txtLeft);
  }
}

出力:

         I like burgundy.
    I like burgundy.
I like burgundy.

C# の固定スペースで String.PadLeftString.PadRight を使用して文字列をフォーマットする

String.PadLeft メソッドは、指定された全長まで先頭の文字で文字列をパディングします。String.PadRight メソッドは、指定された全長まで末尾の文字を含む文字列をパディングします。

これらの 2つの String メソッドから概念を取り入れて、次の C# コードにある新しい String.PadCenter メソッドを作成できます。String メソッドのパディング文字は、スペースまたは指定された文字にすることができ、結果の文字列は右揃えまたは左揃えのいずれかになります。

C# では、PadLeft() および PadRight() は、指定された全長の左または右にスペースまたは指定された文字をパディングすることにより、文字列を右揃えまたは左揃えにすることができます。

コード:

using System;

public class formatString {
  public static void Main(string[] args) {
    string txt = "I like burgundy.";

    Console.WriteLine(txt.PadLeft(20, ' '));

    // to pad_center the string using custom C# code
    Console.WriteLine(txtCenter.PadCenter(txt, 20, ' '));

    Console.WriteLine(txt.PadRight(20, ' '));
  }
}

// custom code to create `PadCenter` String method in C#
public static class txtCenter {
  public static string PadCenter(this string txt, int width, char symb) {
    if (txt == null || width <= txt.Length)
      return txt;

    int padding = width - txt.Length;
    return txt.PadLeft(txt.Length + padding / 2, symb).PadRight(width, symb);
  }
}

出力:

    I like burgundy.
  I like burgundy.
I like burgundy.

このチュートリアルでは、固定スペースを使用した文字列の書式設定や C# でのパディングについて知っておくべきことをすべて学びました。

Syed Hassan Sabeeh Kazmi avatar Syed Hassan Sabeeh Kazmi avatar

Hassan is a Software Engineer with a well-developed set of programming skills. He uses his knowledge and writing capabilities to produce interesting-to-read technical articles.

GitHub

関連記事 - Csharp String