当前位置:编程学习 > C#/ASP.NET >>

asp.net里面计算字数来自动换行?

我要做一个自动计算字数来换行,问题是如果第一行全是汉字,第二行有数字或字母两行的长度就不一样.


现在就是想汉字算一个字, 两个数字或字母算一个字来自动换行应该怎么写? --------------------编程问答-------------------- 除 --------------------编程问答-------------------- Encoding.Default.GetBytes(str).Length,汉字两个字节,字母数字一个字节 --------------------编程问答--------------------
引用 1 楼 huaneramn 的回复:
看不懂,但是感觉很厉害的样子


例如: 
第一行是: 你好你好你好你好
第二行是: 你好aaaaaa
这两个字符长度是一样的但是第二行比较短,不好看,现在要判断字母或数字两个算成一个汉字来换行。用什么方法可以使两行长度一致 --------------------编程问答-------------------- var jmz = {};
jmz.GetLength = function(str) {
    ///<summary>获得字符串实际长度,中文2,英文1</summary>
    ///<param name="str">要获得长度的字符串</param>
    var realLength = 0, len = str.length, charCode = -1;
    for (var i = 0; i < len; i++) {
        charCode = str.charCodeAt(i);
        if (charCode >= 0 && charCode <= 128) realLength += 1;
        else realLength += 2;
    }
    return realLength;
};    执行代码:
这个脚本是通过ASCII码来检测的,应该可以获取到输入字符串的长度,汉字长度会记为2.
可能有特殊字符不在范围内.
jmz.GetLength('测试测试ceshiceshi); --------------------编程问答--------------------
引用 1 楼 huaneramn 的回复:
看不懂,但是感觉很厉害的样子

 大哥:你真的很幽默!!!中国版憨豆呢!!! --------------------编程问答-------------------- 把一个汉字转换成两个字符来计算! --------------------编程问答-------------------- 不用多解释了,代码如下:
public static string GetString(string str, int length)
    {
        Byte[] data = System.Text.Encoding.Default.GetBytes(str);
        if (data.Length <= length)
        {
            return str;
        }
        StringBuilder Rst = new StringBuilder();
        Int32 RstLeng = 0;
        for (Int32 i = 0; i < str.Length; i++)
        {
            Rst.Append(str.Substring(i, 1));
            RstLeng += System.Text.Encoding.Default.GetByteCount(str.Substring(i, 1));
            if (RstLeng >= length)
            {
                Rst.Append("...");
                return Rst.ToString();
            }
        }
        Rst.Append("...");
        return Rst.ToString();
    }
--------------------编程问答--------------------  <style type="text/css">
        <%if (true)   //自动分页
          {%>
        #atcd_content_bg{width:594px;height:836px;z-index:1;background:url() no-repeat right bottom;}
        #atcd_content{width:594px;height:836px;overflow:hidden;z-index:999;}
        <%}else{ %>

        <%}%>
    </style>
    
    <script type="text/javascript">
        //自动分页标志
        var autoPaging = <%=true.ToString().ToLower() %>;
        var articleDiv, bgDiv;  //内容层,背景层
        var pageCount;      //总页数
        var pageHeight;     //每页高度
        var scrollHeight;   //文字总高度
        var lastPageHeight; //最后页的高度
        
        function forbid() { 
            return false; 
        }
 //       document.oncontextmenu = forbid;
//        document.onselectstart = forbid;
//        document.ondragstart = forbid;

        //显示分页内容
        function showPage(pageIndex, jq)
        {
            if(pageIndex < 0 || pageIndex > pageCount - 1)
                return;
            
            if(pageIndex == pageCount - 1){ //最后一页高度适应文字
                bgDiv.style.height = articleDiv.style.height = lastPageHeight + 'px';
                articleDiv.scrollTop = scrollHeight - lastPageHeight; //根据高度,输出指定的页
            }
            else{
                bgDiv.style.height = articleDiv.style.height = pageHeight + 'px';
                articleDiv.scrollTop = pageIndex * parseInt(articleDiv.clientHeight); //根据高度,输出指定的页
            }
         }
        
        $(function() {
            $('#fontSmall').click(function() {
                $('#fontBig').removeClass('current');
                $(this).addClass('current');
                $('#atc_content *').css('font-size', '14px');
            });
            $('#fontBig').click(function() {
                $('#fontSmall').removeClass('current');
                $(this).addClass('current');
                $('#atc_content *').css('font-size', '16px');
            });
                  
            articleDiv = document.getElementById("atcd_content");  //获取内容层
            bgDiv = document.getElementById("atcd_content_bg");  //获取内容层
            pageHeight = parseInt(articleDiv.clientHeight);
            scrollHeight = parseInt(articleDiv.scrollHeight);
            pageCount = Math.ceil(scrollHeight / pageHeight);//获取页面数量
            lastPageHeight = scrollHeight - (pageCount - 1) * pageHeight;
            
            //自动分页
            if(autoPaging && pageCount > 1){
                // 创建分页
        $("#pagination").pagination(pageCount, {
            prev_text:"上一页",
            next_text:"下一页",
        num_edge_entries: 2, //边缘页数
        num_display_entries: 8, //主体页数
        callback: showPage,
        items_per_page:1 //每页显示1项
        });
            }
        });
    </script>


不懂地方,欢迎追问 --------------------编程问答--------------------   这样做,会不会太复杂了,
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,