字符串里包含汉字和英文,如何按照指定的长度换行,要考虑一个汉字占两个字符,还要考虑回车并且不能把完整的英文单词断开,请大家给个例子或提示,谢谢

解决方案 »

  1.   

    这个汉字的问题如果是string在.Net中不存在的
      

  2.   

    是为了输出的行等宽而更好看吗?那么字体呢?字号呢?呵呵……考虑如下两行内容,每行10个字符:
    iiiiiiiiii
    wwwwwwwwww
    一二三四五用等宽字体显示时,它们显然是等宽的。但在用非等宽字体显示时,它们的宽度是多少就说不定,要看具体的字体和字号。正因为如此,所以在到达显示平台前,根据字符数量来让行等宽是做不到的。只有当字符到达显示平台,例如Windows平台上的一个TextBox,然后TextBox可以通过Win32API进行特定字体字号的输出长度测量,再决定在哪里换行。所以,如果你的这个需求的最终目的是为了显示上的优化,那是不能从这方面解决的。你需要用CSS之类的平台无关的技术手段。
      

  3.   

    使用css会把汉字变的很窄,有没有其它的方法,谢谢
      

  4.   

    “不能把完整的英文单词断开”与“按照指定的长度换行”有时候会矛盾的。
    例如你要显示5个字符后要换行,那么community 这个单词就被断开。
      

  5.   

    给你一个方法:
            /// <summary>
            /// 字符长度控制 中文 英文识别!
            /// 注:一个汉字作为2个字符长度处理
            /// </summary>
            /// <param name="str">要进行切割的字符串</param>
            /// <param name="len">返回的长度(自动识别中英文)</param>
            /// <returns></returns>
            public static string CutString(string str, int len)
            {
                byte[] sarr = System.Text.Encoding.Default.GetBytes(str);            if (sarr.Length > len)
                    return System.Text.Encoding.Default.GetString(sarr, 0, len) + "...";
                else
                    return str;
            }
      

  6.   

    http://www.cnblogs.com/yao/archive/2006/07/04/442886.aspx
      

  7.   

    表格或者Div指定好宽度
    然后加上style="table-layout:fixed;word-break:break-all; word-wrap: break-word"
    OK了.
      

  8.   

    各位都走到.net技术方案的黑洞里面了。
      

  9.   

    何必搞这么麻烦,用gdi+的话可以用MeasureString结算你的字符串显示宽度
    如果你想自己计算,只要区分出一个字符是汉字或者英文就可以了
    以下语句可以计算一个字符串的实际长度,英文一字节 汉字两字节
    System.Text.Encoding.GetEncoding(936).GetBytes(str).Length