正在搞一个生成静态新闻页面的程序,里面生成的信息很乱(包括全角字符,汉字,数字,字母等),生成以后长短不一,(我在网上找了些截取字符串的方法,显示都效果不好,问题是双字节汉字的长度不完全等于两个字母的长度).1.现在想求个可以计算每个字符在屏幕上的宽度的方法;
2.或者提供每种不同字体宽度的资料也可(如:Arial类12号字体宽度,包括汉字,数字,字母等不同字体占屏幕的宽度)注意,我作的是web方面的程序,g.MeasureString(new Font)这样的方法是行不通的.
各位支招,100分!!!
2.或者提供每种不同字体宽度的资料也可(如:Arial类12号字体宽度,包括汉字,数字,字母等不同字体占屏幕的宽度)注意,我作的是web方面的程序,g.MeasureString(new Font)这样的方法是行不通的.
各位支招,100分!!!
说明下,我做的是生成静态页面的程序,用的是套模板的方法,一下子生成n个页面,每个页面n条信息.字符大小和字间距在每个生成页面都是一样的,不同的是信息的长度不一,采用截取字符的方式后长度还是长短不一.
.测试测试...
.ss测试s...
我的问题想精准的求出每条信息所占屏墓的宽度
/// 按字符截字符串长度
/// </summary> #region 截字符串
/// <param name="strInput">字符串</param>
/// <param name="startIndex">起始位置</param>
/// <param name="length">长度</param>
/// <returns></returns>
public static string ByteSubString(string strInput,int startIndex,int length)
{
strInput = strInput.Trim();
int byteLen = Encoding.Default.GetByteCount(strInput);
if (byteLen>length)
{
string resultStr = String.Empty;
for (int i = startIndex/2; i < strInput.Length ; i++)
{
if (Encoding.Default.GetByteCount(resultStr) < length)
{
resultStr += strInput.Substring(i,1);
}
else
{
break;
}
}
return resultStr;
}
else
{
return strInput;
}
}
后来自己写了一个截取函数,其中循环判断每一个字符的asc码,如果小于0,就认为是汉字或全角字符,取一个这样的字符相当于两个英文字母。
不知对楼主有没有用?
谢谢!我开始是用了你说的方法,但是达不到效果,信息量比较大,长短相差太大!!sp1234(真正的开发者不会简单地狮子大开口地提问)
谢谢!我把你那方法改了下:
<span style= " word-break:keep-all; overflow: hidden;text;overflow:ellipsis;width:120%"></span>
我的信息是放在一排的,不过还是有缺点,就是信息会被隐含掉一点点!!
adfad中国人民很行fasldfasdfasdfasdfas
</span>这样你可以把标题放在td中,当table随之窗口宽度变化的时候,标题自动按照最合适的宽度截断。这样就比csdn论坛的那种忽然一行忽然两行的列表要好得多。当然最好判断一下浏览器类型。如果不判断,在非ie上应该也不会出错,只是不自动截断文字而已。
width:100%是放在td里面会变两行,达不到效果;width:120%的话不会撑成两行,但会在td的边界上隐含掉一部分.
继续求解好的方法!!
byte[] byTemp = System.Text.Encoding.Default.GetBytes(v_strValue)
基本上byTemp.Length相同,在页面上字符占的宽度想同
说明下,我做的是生成静态页面的程序,用的是套模板的方法,一下子生成n个页面,每个页面n条信息.字符大小和字间距在每个生成页面都是一样的,不同的是信息的长度不一,采用截取字符的方式后长度还是长短不一.
--------------------------------------------------------------------------------
这个和生成静态页面无关,排版布局很多东西就是要靠css的,上面说的style的方法同样也是css,造成隐藏一点的原因是overflow: hidden;