截取字符串包括汉字和英文??? 字符串里包含汉字和英文,如何按照指定的长度换行,要考虑一个汉字占两个字符,还要考虑回车并且不能把完整的英文单词断开,请大家给个例子或提示,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个汉字的问题如果是string在.Net中不存在的 是为了输出的行等宽而更好看吗?那么字体呢?字号呢?呵呵……考虑如下两行内容,每行10个字符:iiiiiiiiiiwwwwwwwwww一二三四五用等宽字体显示时,它们显然是等宽的。但在用非等宽字体显示时,它们的宽度是多少就说不定,要看具体的字体和字号。正因为如此,所以在到达显示平台前,根据字符数量来让行等宽是做不到的。只有当字符到达显示平台,例如Windows平台上的一个TextBox,然后TextBox可以通过Win32API进行特定字体字号的输出长度测量,再决定在哪里换行。所以,如果你的这个需求的最终目的是为了显示上的优化,那是不能从这方面解决的。你需要用CSS之类的平台无关的技术手段。 使用css会把汉字变的很窄,有没有其它的方法,谢谢 “不能把完整的英文单词断开”与“按照指定的长度换行”有时候会矛盾的。例如你要显示5个字符后要换行,那么community 这个单词就被断开。 给你一个方法: /// <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; } http://www.cnblogs.com/yao/archive/2006/07/04/442886.aspx 表格或者Div指定好宽度然后加上style="table-layout:fixed;word-break:break-all; word-wrap: break-word"OK了. 各位都走到.net技术方案的黑洞里面了。 何必搞这么麻烦,用gdi+的话可以用MeasureString结算你的字符串显示宽度如果你想自己计算,只要区分出一个字符是汉字或者英文就可以了以下语句可以计算一个字符串的实际长度,英文一字节 汉字两字节System.Text.Encoding.GetEncoding(936).GetBytes(str).Length help!!请教各位高手~~关于用MSNPSHARP获取MSN联系人 就这点分了 问一下大家IE9适合做调试的浏览器吗? 如何判断页面通过超链接而不是直接回车跳转过来的 如何强制停止 ADO.NET 正在执行中的存储过程 一个关于json的问题,急! 如何编写类似论坛发贴插入连接之类的功能?? 谁能把浏览这个‘浏览’按钮 用 CSS 变成其它颜色呢?? asp.net中如何调用js中得函数并得到返回值? 怎么给一个TextBox设置焦点? 一定给分! 为什么在JS脚本中用window.open()打开硬盘目录下的html有的电脑可以有的不可以 为什么我的IIS不能添加映射???急啊!!!
iiiiiiiiii
wwwwwwwwww
一二三四五用等宽字体显示时,它们显然是等宽的。但在用非等宽字体显示时,它们的宽度是多少就说不定,要看具体的字体和字号。正因为如此,所以在到达显示平台前,根据字符数量来让行等宽是做不到的。只有当字符到达显示平台,例如Windows平台上的一个TextBox,然后TextBox可以通过Win32API进行特定字体字号的输出长度测量,再决定在哪里换行。所以,如果你的这个需求的最终目的是为了显示上的优化,那是不能从这方面解决的。你需要用CSS之类的平台无关的技术手段。
例如你要显示5个字符后要换行,那么community 这个单词就被断开。
/// <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;
}
然后加上style="table-layout:fixed;word-break:break-all; word-wrap: break-word"
OK了.
如果你想自己计算,只要区分出一个字符是汉字或者英文就可以了
以下语句可以计算一个字符串的实际长度,英文一字节 汉字两字节
System.Text.Encoding.GetEncoding(936).GetBytes(str).Length