C#实现字符串格式化的五种方式

来自:网络
时间:2024-09-10
阅读:

1. 字符串插值(C# 6.0 及更高版本)

字符串插值是 C# 6.0 引入的一种非常直观和方便的字符串格式化方法。通过在字符串中使用 ${} 语法,可以直接将变量的值嵌入到字符串中。

int number = 10;  
string message = $"The number is {number}.";  
Console.WriteLine(message);  // 输出:The number is 10.

2. String.Format 方法

String.Format 方法允许你使用类似于 printf 的格式字符串来格式化字符串。

int number = 10;  
string message = String.Format("The number is {0}.", number);  
Console.WriteLine(message);  // 输出:The number is 10.  
  
// 也可以指定多个参数  
string name = "Alice";  
message = String.Format("Hello, {0}! The number is {1}.", name, number);  
Console.WriteLine(message);  // 输出:Hello, Alice! The number is 10.

3. 复合格式化(与 String.Format 类似)

许多.NET 类库中的方法都支持复合格式化,这意味着你可以直接使用格式字符串和参数列表来生成格式化的字符串,而无需显式调用 String.Format。例如,Console.WriteLine、StringBuilder.AppendFormat 等方法。

int number = 10;  
Console.WriteLine("The number is {0}.", number);  // 输出:The number is 10.

4. ToString 方法

大多数.NET 类型都提供了 ToString 方法,该方法可以接受一个或多个格式化参数,以生成格式化的字符串表示。

int number = 10;  
string formattedNumber = number.ToString("D8");  // 输出:00000010,D8 表示至少显示8位数字,不足前面补0  
Console.WriteLine(formattedNumber);

5. 自定义格式化

你还可以通过实现 IFormattable 接口来自定义类型的格式化方式。这允许你在类型级别上控制字符串的格式化行为。

public class MyNumber : IFormattable  
{  
    private int value;  
  
    public MyNumber(int value)  
    {  
        this.value = value;  
    }  
  
    public string ToString(string format, IFormatProvider formatProvider)  
    {  
        if (formatProvider != null)  
        {  
            // 可以使用 formatProvider  
        }  
  
        if (format == "hex")  
        {  
            return value.ToString("X");  
        }  
  
        return value.ToString();  
    }  
  
    // 还可以覆盖 ToString() 无参版本  
    public override string ToString()  
    {  
        return ToString(null, null);  
    }  
}  
  
// 使用  
MyNumber myNumber = new MyNumber(255);  
Console.WriteLine(myNumber.ToString("hex"));  // 输出:FF
返回顶部
顶部