【发布时间】:2013-03-02 14:42:55
【问题描述】:
如果你想只取字符串的一部分,则多使用 substring 方法。 这有一个缺点,您必须首先测试字符串的长度以避免错误。 例如,您要将数据保存到数据库中,并希望将值截取到前 20 个字符。
如果您执行 temp.substring(0,20) 但 temp 仅包含 10 个字符,则会引发异常。
我看到了 2 个解决方案:
- 测试长度,如果需要,做子串
-
使用扩展方法采取
string temp = "1234567890"; var data= new string( temp.Take(20).ToArray()); --> data now holds "1234657890"
当使用 Take 方法时,在速度或内存使用方面是否有任何劣势。 好处是您不必编写所有这些 if 语句。
【问题讨论】:
-
使用秒表进行计时。此外,您可以为执行检查的字符串编写自己的扩展方法。
-
我会说 Take 会枚举你的字符串。这可能会对长字符串产生巨大的影响。
-
性能非常符合上下文。
-
temp.SubString(0, Math.Min(20, temp.Length))