隐式强制扩展方法

时间:2011-03-29 14:16:43

标签: c# extension-methods

我遇到过一个案例,我正在使用字符串左,右和中心,但每次都要在它们上面调用一个扩展方法来抑制逗号(当我说压缩时,我实际上是指将它们包裹起来报价,因为这是为CSV输出)。这是一个基本的例子:

public static string CommaSuppressor(this string str)
{
    return str.Contains(',') ? string.Concat("\"", str.Replace("\"", "\"\""), "\"") : str;
}

虽然当然最有可能采用更优雅,更有效的方法,但我可能无法防范边缘情况,毫无疑问社区会让我知道。

因此,对于我曾经处理的每一个字符串,我实际上想要在其上调用它。当然,随处可见大量字段,这意味着我的代码中充斥着myvar.CommaSuppressor()

任何人都可以在CommaSuppressor隐式调用的方向上摇摆我吗?

4 个答案:

答案 0 :(得分:4)

我不确定它是否更好,但另一种方法是编写自己的类来保存字符串。在构造函数中,您可以处理逗号,这样当您访问它们时,它们就会根据您的意愿进行转义。

答案 1 :(得分:1)

您可以使用重载的ToString()方法创建自定义类。在使用ToString()方法获得已处理的字符串值之前,您可以进行大量自定义。但是,当然,它不会像原始的System.String那样灵活

答案 2 :(得分:1)

使用默认字符串类无法实现此目的。我能想到的唯一方法是为string创建一个包装类,每次需要时都会调用此方法。

答案 3 :(得分:1)

如何仅在将字符串输出到csv时执行逗号抑制?