C#中文字符截取函数

///str_value 字符
///str_len 要截取的字符长度

  public string leftx(string str_value,int str_len)
  
{
   
int p_num = 0;   
   
int i;
   
string New_Str_value = "";

   
if (str_value=="")
   
{
    New_Str_value 
= "";
   }

   
else
   
{
   
int Len_Num = str_value.Length;

   

   
//if (Len_Num < str_len)
   
//{
   
// str_len = Len_Num;
   
//}


   
for (i = 0;i<=Len_Num - 1; i++)
    
{
     
//str_value.Substring(i,1);
     if (i >Len_Num) break;
     
char c  = Convert.ToChar(str_value.Substring(i,1));
     
if  (((int)c > 255|| ((int)c<0))
     
{
      p_num 
= p_num + 2;

     }

     
else
     
{
      p_num 
= p_num + 1;

     }


     
if (p_num >= str_len)
     
{
      
      New_Str_value 
= str_value.Substring(0,i+1);
      
      
break;
     }

     
else
     
{
      New_Str_value 
= str_value;      
     }

   
    }

   
      }

   
return New_Str_value;
  }



C#截取中英文混合字符串

注意:需要引用正则名字空间,using System.Text.RegularExpressions;


调用方法:

CnCutString(ArtTitle, 24, "..");

/// <summary>
  
/// 截取中英文混合字符串
  
/// </summary>
  
/// <param name="original">原始字符串</param>
  
/// <param name="length">截取长度</param>
  
/// <param name="fill">截取串小于原始串时,尾部附加字符串</param>
  
/// <returns></returns>

  public static String CnCutString(String original, Int32 length, String fill)
  
{
   Regex CnRegex 
= new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);
   Char[] CharArray 
= original.ToCharArray();
   Int32 tmplength 
= 0;
   
for (Int32 i = 0; i < CharArray.Length; i++)
   
{
    tmplength 
+= CnRegex.IsMatch(CharArray[i].ToString()) ? 2 : 1;
    
if (tmplength > length) return original.Substring(0, i - fill.Length) + fill;
   }


   
return original;
  }

posted @ 2007-09-10 17:32  宿远  阅读(478)  评论(0编辑  收藏  举报