修剪C#应用程序中的所有字符串或减少Trim()调用数的最简单方法?
如果那个问题没有答案,我很抱歉。。默认情况下,让C#应用程序中的所有字符串都被修剪的最简单且不冗长的方法是什么? 创建新类型、扩展方法或属性?是否有任何技巧或设置可以减少Trim()调用的数量修剪C#应用程序中的所有字符串或减少Trim()调用数的最简单方法?,c#,string,C#,String,如果那个问题没有答案,我很抱歉。。默认情况下,让C#应用程序中的所有字符串都被修剪的最简单且不冗长的方法是什么? 创建新类型、扩展方法或属性?是否有任何技巧或设置可以减少Trim()调用的数量 UPD。嗯,我没有特别的例子——只是用户从UI或Excel或其他东西输入了大量的内容,您应该始终记住Trim(),Trim(),Trim()。我真的很想知道为什么在C#中字符串没有被默认修剪。从这个问题很难判断;但我可能会创建一个自定义textbox,用Text.Trim()覆盖Text方法 或者,您可以
UPD。嗯,我没有特别的例子——只是用户从UI或Excel或其他东西输入了大量的内容,您应该始终记住Trim(),Trim(),Trim()。我真的很想知道为什么在C#中字符串没有被默认修剪。从这个问题很难判断;但我可能会创建一个自定义textbox,用Text.Trim()覆盖Text方法 或者,您可以在一个公共类中创建一个方法,该方法将修剪传递给它的任何内容。所以在使用任何字符串之前;你应该先让他们通过这个方法
如果你能详细说明一下你的原始问题,那会很有帮助的,如果你是指为资源文件或其他东西获取的字符串,那么只需创建一个获取字符串的实用函数,并在其中调用
Trim()
,因此,在调用代码时,您无需担心它。如果发现自己在同一范围内大量使用该值,那么为了减少调用次数,最好的选择是将该值修剪一次,并将其存储为变量,即
var trimmedStr = myStr.Trim();
扩展方法将毫无意义,因为它几乎等同于调用Trim(),正如我想象的那样,您只需在内部执行此操作。创建自定义类型只是为了确保字符串没有空格,这有点过于工程化,没有必要。有很多缺点,但您可以执行以下操作:
class StringT
{
private String _s;
public StringT(String v)
{
if (!String.IsNullOrEmpty(v)) { _s = v.Trim(); }
else { _s = v; }
}
public static implicit operator StringT(String v) { return new StringT(v); }
public static implicit operator String(StringT v) { return v._s; }
}
为什么需要减少对Trim()方法的调用次数?为什么有这么多未修剪的字符串让您担心?这些“不应修剪的字符串”是从哪里来的?用户输入,数据库,两者都有?为什么你认为值来自文本框控件?OP甚至没有提到UI。@Jim:“在一个公共类中创建一个方法,该方法将修剪传递给它的任何内容”。您是指公共类
System.String
?;)中的Trim
方法吗詹姆斯:这只是猜测;这次行动真的没什么可干的。我想如果你在修剪刺,它们可能来自用户输入。卢克:没错;而不是到处都是String.Trim();创建一个调用String.Trim()的方法,然后通过that@Jim:但是像MyClass.MyMethod(myString)
或myString.MyExtensionMethod()
这样的东西与使用普通的myString.Trim()
相比没有任何好处,是吗?该方法的唯一优点是避免在代码中到处使用.Trim()。它在可伸缩性方面也可能是有益的;假设所有回车都需要解析出来,对该方法进行一次更改将消除查找代码中分散的.Trim()的所有用法