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()的行为有所不同并不是解决问题的办法。但是,有没有一种方法可以让特定的字符串以不同的方式打印到控制台,但在其他地方以原始形式使用?
您可以这样做:
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)并将其设置为供您的应用程序使用。
从来没有尝试过,所以请注意。