字符串截取

/// <summary>
        
/// 截取字符串
        
/// </summary>
        
/// <param name="input">输入字符</param>
        
/// <param name="length">截取长度</param>        
        
/// <param name="isChar">是否是单字节\r\nTrue:单字节长度.  False:双字节长度</param>
        
/// <returns></returns>

        public static string Truncate(string input, int length,bool isChar)
        
{
            
int tmpLenght = GetBytesLength(input);
            
int trunLength=0;
            
if (!isChar)
            
{
                trunLength 
= length;
                length 
*= 2;
            }

            
else
            
{
                trunLength 
= length / 2;
            }

            
if (length >= tmpLenght)
                
return input;
            tmpLenght 
= GetBytesLength(input.Substring(0, trunLength));
            
int tempT = 0;
            
bool isTrue = true;
            
while (isTrue)
            
{
                tempT 
= (length - tmpLenght) / 2 + 1;

                tmpLenght 
+= GetBytesLength(input.Substring(trunLength, tempT));
                
if (tmpLenght > length)
                
{

                    isTrue 
= false;
                    tempT
--;

                    trunLength 
+= tempT;
                }

                
else
                    trunLength 
+= tempT;


            }

            
return input.Substring(0, trunLength);
        }

        
/// <summary>
        
/// 得到字符串的字节长度
        
/// </summary>
        
/// <param name="input"></param>
        
/// <returns></returns>

        public static int GetBytesLength(string input)
        
{
            
return Encoding.Default.GetByteCount(input.ToCharArray());
        }
posted @ 2008-03-27 16:05  lzwlfw  阅读(265)  评论(0编辑  收藏  举报