按字节数截取字符串

        /// <summary>
        /// 裁减字符串
        /// </summary>
        /// <param name="OriginalString">被裁减字符串</param>
        /// <param name="BytesAfterCutLength">需保留的字节数</param>
        /// <returns></returns>
        public string GetSubstring(string OriginalString, int BytesAfterCutLength)
        {
            string OptimizedText = OriginalString;
            byte[] OriginalTextByte = Encoding.Default.GetBytes(OriginalString);
            if (OriginalTextByte.Length > BytesAfterCutLength)
            {
                int Left = BytesAfterCutLength / 2;
                int Right = BytesAfterCutLength;
                Left = Left > OriginalString.Length ? OriginalString.Length : Left;
                Right = Right > OriginalString.Length ? OriginalString.Length : Right;
                while (Left < Right - 1)
                {
                    int Middle = (Left + Right) / 2;
                    if (Encoding.Default.GetBytes(OriginalString.Substring(0, Middle)).Length > BytesAfterCutLength)
                    {
                        Right = Middle;
                    }
                    else
                    {
                        Left = Middle;
                    }
                }
                byte[] RightValue = Encoding.Default.GetBytes(OriginalString.Substring(0, Right));
                if (RightValue.Length == BytesAfterCutLength)
                {
                    OptimizedText = OriginalString.Substring(0, Right);
                }
                else
                {
                    OptimizedText = OriginalString.Substring(0, Left);
                }
            }
            return OptimizedText;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值