首先我们来看2个需要用到SubString()的地方:
1、 在C#中,我们时常需要缩减字符,并且用"..."取代被缩减的部分,通常我们使用的是(string).SubString(),然后我们可以这样缩减:
这样的写好处是比较容易想到,且简要易懂,便于编写。
这样写的不足是格式比较生硬,不便于复用,编写效率低。
2、 我在开发一些项目的时候,还经常有这样的需求:一个N长度的字符串,要取末尾的几个字符,或者中间指定起始和结尾的一段字符,其余的用"..."表示,这时候往往需要比较复杂的判断,最后用一个(string).SubString()。
下面我提供一种可以同时解决灵活性和繁琐判断的解决方案,希望可以抛砖引玉:
你可以把这段程序放在一个单独的类库中,比如Common.StringHandle。由于采用了静态方式,你只需要这样直接调用:
关于处理机制和参数说明,在编写的时候我已经说明的比较详细了,下面我居举一些简单的例子:
要求:字符串“0123456789”中,取前5个字符,其余用“..”替代
代码:Common.StringHandle.SubString("0123456789",0,5)
输出结果:01234..
要求:字符串“0123456789”中,取“5”开始的3字符(不足3个则全取),如果之后还有其余用“..”替代
代码:Common.StringHandle.SubString("0123456789",5,3)
输出结果:..567..
要求:字符串“0123456789”中,取“5”开始的10字符(不足10个则全取),如果之后还有其余用“..”替代
代码:Common.StringHandle.SubString("0123456789",5,10)
输出结果:..56789
我在这也只是给出一种思路,这段代码还有很多的扩展余地:比如约定".."的形式、实现从右截取N个字符,或者在.net3.5中使用扩展方法(Extension Method)来完成等等(有些我已经实现,但由于加进来可能冲淡主题了,在此省略,不过我们可以例外探讨)。
希望可以抛砖引玉,跟大家一起探讨!