在 C# 中格式化具有固定空格的字串

Syed Hassan Sabeeh Kazmi 2023年10月12日
  1. 使用 String.Format 方法在 C# 中格式化具有固定空格的字串
  2. C# 中使用 $ – 字串插值 格式化具有固定空格的字串
  3. 使用 String.PadLeftString.PadRightC# 中格式化具有固定空格的字串
在 C# 中格式化具有固定空格的字串

在本教程中,你將瞭解 C# 如何讓你可以使用不同的方法自由地格式化具有固定空間的字串。 .NET 環境具有諸如 String.Format 之類的靜態方法來將字串與固定空格對齊。

使用 String.Format 方法在 C# 中格式化具有固定空格的字串

該方法將物件、變數或表示式的值轉換為字串,並根據指定的格式將它們插入到另一個字串中。String.Format 以格式字串開頭,後跟一個或多個物件。

{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>,以及方括號中的兩個輔助元素和可選元素: <alignment><formatString>

interpolationExpression 生成要格式化的結果,alignment 表示正值或負值以將字串右對齊或左對齊,formatString 由表示式結果的型別支援。

通常,需要呼叫支援複合格式的方法,但你可以在此方法的幫助下使用任何字串,而無需任何方法支援複合格式。C# 通過在插值表示式中引入表示式以插入字串而不是引數列表,從而可以輕鬆讀取和編碼插值字串。

除了更好的可理解性和效能之外,$ - string interpolation 方法不僅可以替代對複合格式方法的呼叫,還可以用於字串連線操作。它支援的連線操作可以生成更精確和可讀的 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.

使用 String.PadLeftString.PadRightC# 中格式化具有固定空格的字串

String.PadLeft 方法將帶有前導字元的字串填充到指定的總長度。String.PadRight 方法將帶有尾隨字元的字串填充到指定的總長度。

你可以從這兩個 String 方法中獲取概念,並建立一個新的 String.PadCenter 方法,你將在以下 C# 程式碼中找到該方法。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