asp.net下面如何精确取出左边8个字符2个字符或数字算一个汉字,
请帮忙

解决方案 »

  1.   

    Dim encodingData() As Byte
    dim str as string encodingData = System.Text.Encoding.Default.GetBytes(txtlength.Text)
                c = encodingData.Length.ToString
    str=System.Text.Encoding.Default.GetString(encodingData,0,20)
      

  2.   

    public static int GetStrLen(string Str)
    {
    int i = 0;
    foreach (char Char in Str)
    {
    if ((int)Char > 127)
    i += 2;
    else
    i ++;
    }
    return i;
    }
      

  3.   

    public static int GetStrLen(string Str)
    {
    int i = 0;
    foreach (char Char in Str)
    {
    if ((int)Char > 127)
    i += 2;
    else
    i ++;
    }
    return i;
    }
      

  4.   

    string mystr = "EnncodingEncoding";
    Byte[] encodingData = System.Text.Encoding.Default.GetBytes(mystr);
    mystr = System.Text.Encoding.Default.GetString(encodingData,0,10);
    this.Label1.Text = mystr;
      

  5.   

    rickjelly2004(rick & jelly) 的方法实在是太棒了,非常巧妙.
      

  6.   

    楼上的是不是要try一下,当字符长度小于8的时候会出错的
      

  7.   

    谢谢楼上指教,确实如此.
    重新写了一个函数如下:/// <summary>
    /// 截取以字节计算的文本长度
    /// </summary>
    /// <param name="msytr">要截取的文本串</param>
    /// <param name="intLength">要截取的字节数</param>
    /// <returns>返回截取的字节数</returns>
    private string myCutString(string mystr,int intLength)
    {
    Byte[] myByte = System.Text.Encoding.Default.GetBytes(mystr);
    string str = "";
    if(myByte.Length < intLength)
    {
    str = mystr;
    }
    else
    {
    str = System.Text.Encoding.Default.GetString(myByte,0,intLength);
    switch(System.Text.Encoding.Default.GetByteCount(mystr) - intLength)
    {
    case 1:
    str += "..";
    break;
    case -1:
    str += "...";
    break;
    default:
    break;
    }
    }
    return(str);
    }调用:
    string mystr = "Ennc";
    this.Label1.Text = this.myCutString(mystr,8);
      

  8.   

    rickjelly2004(rick & jelly) 的代码巧妙在哪里?麻烦说说
      

  9.   

    switch(System.Text.Encoding.Default.GetByteCount(mystr) - intLength)
    {
    case 1:
    str += "..";
    break;
    case -1:
    str += "...";
    break;
    default:
    break;
    }
    }
    这儿有点不明白,你是不是要一个"."代表不足一位