最近写了一个简单的方法,用于截取固定长度的字符串.
public string CutString(sting inStr,int length)
{
  string outStr;
  if ( inStr.Lenth > length )
  {
     outStr = inStr.SubString(0,length);
  }
  else
     outStr = inStr;
  return outStr;
}
问题在于中英文字符不一样,上述功能只能是取出固定个数的字符,但实际长度不一样.
而本人要实现的功能是要取相同长度的字符.
请问该如何处理?
如:
abcdefghij 十个英文字符
一二三四五 五个中文字符
另外,就是要避免取出半个中文字符!该如何做?

解决方案 »

  1.   

    byte[] b = System.Text.Encoding.Default.GetBytes(string);
    避免取到半个中文就是在要取的最后一位判断一下是否中文,如果是的话少取一个byte或者多取一个byte
      

  2.   

    在string中一个英文字母和一个汉字的长度是一样的.不用担心
      

  3.   

    http://www.ljf.cn/2007/7/Item20691.html
      

  4.   


    public string CutString(sting inStr,int length)
    {
        Encoding d = Encoding.Default;
        byte[] bs = d.GetBytes(inStr);
        return d.GetString(bs, 0, length);
    }
      

  5.   

    以上length指的是字节长度
    不必担心半个字符的问题,GetString方法会自动处理的
      

  6.   

    lovefootball ,感谢你的回复,那请问该如何判断最后一个字符是中文还是英文字符呢?
      

  7.   

    我自己写的
    #region 截取定长汉字与英文
    /// <summary>
    /// 截取定长汉字与英文
    /// </summary>
    /// <param name="str">要截取的字符串</param>
    /// <param name="strlen">截取长度</param>
    /// <returns>返回定长的新字符串</returns>
    public string sp(string str,int strlen)
    {
    string newstr="";
    int t=0 ;
    for(int i=1;i<str.Length;i++)
    {
    int c=(int)(str[i]);
    if (c>255)
    {
    t=t+2 ;
    }
    else 
    {
    t=t+1;
    }
    if (t>=strlen)
    {
    newstr=str.Substring(0,i)+".." ;
    break;
    }
    else 
    {
    newstr=str+" " ;
    }
    }

    return newstr;
    }
    #endregion
      

  8.   

    .NET的String都是用Unicode编码的吧,中文字符和英文字母占的长度一样的,直接用Substring方法截取就好了呀,没看懂楼主什么意思。