惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
Apple Machine Learning Research
Apple Machine Learning Research
量子位
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
博客园 - 聂微东
博客园_首页
D
Docker
博客园 - 叶小钗
S
SegmentFault 最新的问题
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
F
Fortinet All Blogs
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
爱范儿
爱范儿
腾讯CDC
罗磊的独立博客
雷峰网
雷峰网
博客园 - Franky

博客园 - zengjun

IE11浏览器中的My97日历控件刷新后无法打开问题解决办法 js模拟Map对象,实现key---value 10 个Javascript框架和丰富的UI组件 获取经纬度之间的距离的SQL函数(转) ASP.NET使用FCKEditor_2.6.6与FCKeditor.Net_2.6.3配置(转载) JS的正则表达式 CSS IE6,IE7,FF兼容性(转)让你的IE7和IE6友好共存(转) asp.net页面回传与js调用服务端事件、PostBack的原理详解(转) DataGrid中选中checkbox时,该行颜色改变(转) js获取浏览器高度和宽度值(转) ASP.NET 让控件获取焦点及设置输入法全角半角或无效 调用C++开发的DLL报内存异常错误 Gridview设置DataFormatString (转) .NET三层经典架构PetShop3.0说明之表现层 .NET三层经典架构PetShop3.0说明连载一(转) 用ASP.Net2.0开发多语言系统 邮件收发类 永远不要跟父母说的几句话(转) C#泛型集合揽胜(转)
按指定长度截取字符串(以字节计算长度)
zengjun · 2008-08-21 · via 博客园 - zengjun

using System.Text.RegularExpressions;

        /// <summary>
        /// 按指定长度截取字符串(以字节计算长度)
        /// </summary>
        /// <param name="stringToSub"></param>
        /// <param name="length"></param>
        /// <returns></returns>
        public static string GetFirstString(string stringToSub, int length)
        {
            if (System.Text.Encoding.Default.GetByteCount(stringToSub) <= length)
                return stringToSub;

            Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);
            char[] stringChar = stringToSub.ToCharArray();
            StringBuilder sb = new StringBuilder();
            int nLength = 0;
            bool isCut = false;
            for (int i = 0; i < stringChar.Length; i++)
            {
                if (regex.IsMatch((stringChar[i]).ToString()))
                {
                    sb.Append(stringChar[i]);
                    nLength += 2;
                }
                else
                {
                    sb.Append(stringChar[i]);
                    nLength = nLength + 1;
                }

                if (nLength > length)
                {
                    isCut = true;
                    break;
                }
            }
            if (isCut)
                return sb.ToString() + ""; //可加上省略号
            else
                return sb.ToString();
        }