用户输入一个字符串,中英文不确定。我要按一个中文占两位,一个英文占一位这种方式截取前十位。
比如用户输入6个中文,那么截取前五个;用户输入十二个英文则截取前十个;用户输入中英文混合例“我们aaabbbccc”,则截取的结果为:我们aaabbb,总之中文占2英文占1总数不大于10。求该处理函数,多谢!

解决方案 »

  1.   

    如果出现的是"aaabb我们" 那怎么取?
      

  2.   

    参考
    public static string CutString(string str, int length)
    {
      int i = 0, j = 0;
      foreach (char chr in str)
      {
        if ((int)chr > 127)
        {
          i += 2;
        }
        else
        {
          i++;
        }
        if (i > length)
        {
          str = str.Substring(0, j) + "…";
          break;
        }
        j++;
      }
      return str;
    }
      

  3.   

    string temp = "我们aaabbb";
    byte[] b = Encoding.GetEncoding("gb2312").GetBytes(temp);
    这样你就可以操作byte了,中文两个byte英文一个byte
    碰到一楼说的那种办法怎么办?自己考虑一下就可以了