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

Syed Hassan Sabeeh Kazmi 2023年1月30日 2022年7月18日
  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