asp.net里面计算字数来自动换行?
我要做一个自动计算字数来换行,问题是如果第一行全是汉字,第二行有数字或字母两行的长度就不一样.现在就是想汉字算一个字, 两个数字或字母算一个字来自动换行应该怎么写? --------------------编程问答-------------------- 除 --------------------编程问答-------------------- Encoding.Default.GetBytes(str).Length,汉字两个字节,字母数字一个字节 --------------------编程问答--------------------
例如:
第一行是: 你好你好你好你好
第二行是: 你好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); --------------------编程问答--------------------
大哥:你真的很幽默!!!中国版憨豆呢!!! --------------------编程问答-------------------- 把一个汉字转换成两个字符来计算! --------------------编程问答-------------------- 不用多解释了,代码如下:
public static string GetString(string str, int length)--------------------编程问答-------------------- <style type="text/css">
{
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();
}
<%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