C#-使字符串以不同的方式打印到控制台,但可以在其他地方以其原始形式使用

本文关键字:其他 但可以 原始 控制台 字符串 式打印 C#- | 更新日期: 2023-09-27 17:57:58

我有一个奇怪的问题。开始了-

让我们考虑以下代码片段:

string test ="this is a test string";
Console.WriteLine(test);

我想让它打印一个不同的东西,比如yup, this is a test string。事实上,我想看看字符串是否匹配某种模式,如果匹配,我希望它以不同的方式打印。我希望只有当我将它打印到控制台时才会出现这种情况,但无论何时我在其他地方使用它,它都应该是原始的。

我希望我能在String类(或Object类?)上写一个扩展方法,并根据我的需要返回ToString(),但文档上说:

扩展方法永远不会如果其签名与在类型中定义的方法。

有可能做这样的事吗?我不能使用新类型。或者,试图让ToString()的行为有所不同并不是解决问题的办法。但是,有没有一种方法可以让特定的字符串以不同的方式打印到控制台,但在其他地方以原始形式使用?

C#-使字符串以不同的方式打印到控制台,但可以在其他地方以其原始形式使用

您可以这样做:

public static class StringExtension
{
    public static void WriteToConsole(this string text)
    {
        string result;
        if (<matches1>)
            result = "111";
        else if (<matches1>)
            result = "222";
        Console.WriteLine(result);
    }
}

其用法是:

string test = "this is a test string";
test.WriteToConsole();

从技术上讲,您可以实现IFormatProvider并将其传递给Console.WriteLine

要使其在默认情况下使用,您可以尝试使自定义[CultureInfo](http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx)并将其设置为供您的应用程序使用。

从来没有尝试过,所以请注意。

相关文章: