我遇到过一个案例,我正在使用字符串左,右和中心,但每次都要在它们上面调用一个扩展方法来抑制逗号(当我说压缩时,我实际上是指将它们包裹起来报价,因为这是为CSV输出)。这是一个基本的例子:
public static string CommaSuppressor(this string str)
{
return str.Contains(',') ? string.Concat("\"", str.Replace("\"", "\"\""), "\"") : str;
}
虽然当然最有可能采用更优雅,更有效的方法,但我可能无法防范边缘情况,毫无疑问社区会让我知道。
因此,对于我曾经处理的每一个字符串,我实际上想要在其上调用它。当然,随处可见大量字段,这意味着我的代码中充斥着myvar.CommaSuppressor()
。
任何人都可以在CommaSuppressor
隐式调用的方向上摇摆我吗?
答案 0 :(得分:4)
我不确定它是否更好,但另一种方法是编写自己的类来保存字符串。在构造函数中,您可以处理逗号,这样当您访问它们时,它们就会根据您的意愿进行转义。
答案 1 :(得分:1)
您可以使用重载的ToString()方法创建自定义类。在使用ToString()方法获得已处理的字符串值之前,您可以进行大量自定义。但是,当然,它不会像原始的System.String那样灵活
答案 2 :(得分:1)
使用默认字符串类无法实现此目的。我能想到的唯一方法是为string
创建一个包装类,每次需要时都会调用此方法。
答案 3 :(得分:1)
如何仅在将字符串输出到csv时执行逗号抑制?