[导入]用C#截取指定长度的中英文混合字符串 改进版
很早以前写过一篇文章(用C#截取指定长度的中英文混合字符串),但是对性能没有测试,有人说我写的这个方法性能有问题,后来想,可能真会有BT之需求要求传入一个几万K甚至几M体积的字符串进来,那将会影响正则Match的速度,比如文章系统中就极有可能用到,今天有点时间,就改进了一下,代码如下:
![](https://www.cnblogs.com/images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif)
此修改版的方法多加了个参数"string endStr",是指当字符串"string s"超过指定长度"int l"时,对结尾的处理,比如要不要加上省略号"..."或加上其它字符。
另外,添加了省略号之后,省略号长度也是算在结果的长度之内了。
用法如:
getStr("中国1中国中国中1111中国", 23,"")
//output:中国1中国中国中1111中国
getStr("中国1中国中国中1111中国", 23,"...")
//output:中国1中国中国中1111...
getStr("中国1中国中国中1111中国中国", 23,"")
//output:中国1中国中国中1111中国
getStr("中国1中国中国中1111中国中国", 23,"...")
//output:中国1中国中国中1111...
----------------------------------------------------------------------
补充:"kpz"回复说上边的方法会截取失真,而我又无法做到穷尽测试,所以换了另一种写法,为了考虑性能结果把逻辑搞的有点"晕",反复测试了多次,代码如下:
![](https://www.cnblogs.com/images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif)
用法和参数含义均同前,注意省略号也占位置,算了长度。
[新闻]各显神通 Android平台10大应用软件揭秘
博客园首页 社区 新闻频道 小组 博问 网摘 闪存
文章来源:http://www.cnblogs.com/yao/archive/2008/03/06/1093066.html