显示中英文混排截取字符串的两种方法
2013-01-04 18:20
267 查看
方法一:用c#程序处理。
附代码
View Code
缺点:在真正显示的界面上中文字符的长度并非英文字符的两倍。
方法二:用css控制样式。
如果是控制表格中td的内容显示省略,则首先给表格加样式 table-layout:fixed;
然后给相应的td加上样式:
如果是span或者div,则直接应用该样式即可。
缺点:不同浏览器之间有少许差别,但相比起第一种方法很精确。
附代码
View Code
/// <summary> /// 返回某字符串的混编长度 /// </summary> /// <param name="sourceStr">源字符串</param> /// <returns></returns> public static int MixLength(this string sourceStr) { int mixLength = sourceStr.Length; for (int i = 0; i < sourceStr.Length; i++) { byte[] bytes = Encoding.Default.GetBytes(sourceStr.Substring(i, 1)); if (bytes.Length > 1) { mixLength++; } } return mixLength; } /// <summary> /// 截取相当于mixLength英文字符长度的中英文混合字符串 /// </summary> /// <param name="sourceStr">源字符串</param> /// <param name="mixLength">要截取的长度,中文算两个长度单位</param> /// <returns></returns> public static string MixSubstring(this string sourceStr, int mixLength) { int length = mixLength; bool flag = false;//标记length是否减1 int i = 0; while (i < length) { if (flag) { length--; flag = false;//重置 } byte[] bytes = Encoding.Default.GetBytes(sourceStr.Substring(i, 1)); if (bytes.Length > 1)//是中文,则在下次减一 { flag = true; } i++; } return sourceStr.Substring(0, length); }
缺点:在真正显示的界面上中文字符的长度并非英文字符的两倍。
方法二:用css控制样式。
如果是控制表格中td的内容显示省略,则首先给表格加样式 table-layout:fixed;
然后给相应的td加上样式:
.ellipsis { width:200px; //需要控制显示的长度 white-space: nowrap; word-break: keep-all; overflow: hidden; text-overflow: ellipsis; }
如果是span或者div,则直接应用该样式即可。
缺点:不同浏览器之间有少许差别,但相比起第一种方法很精确。
相关文章推荐
- C#截取指定长度中英文字符串方法 (收藏)
- js截取字符串的两种方法及区别详解
- Java的中英文混合截取字符串的问题解决方法
- go语言按显示长度截取字符串的方法
- 用Java实现按字节长度截取中英文数字字符串的方法总结
- js截取字符串的两种方法及区别详解
- 处理字符串的一些js/jq方法(去除HTML,去除空格,计算真实长度,截取中英文字符)
- 高效中英文字符串截取方法
- 处理字符串的一些js/jq方法(去除HTML,去除空格,计算真实长度,截取中英文字符)
- C#截取指定长度中英文字符串方法
- ThinkPHP的截取字符串函数无法显示省略号的解决方法
- elphi 怎么给字符串里加回车换行,label显示多行文本的两种方法
- 高效中英文字符串截取方法[不用普遍的正则表达式方法]
- C#截取指定长度中英文字符串方法
- Thinkphp内置的一个中英文字符串截取函数,显示省略号
- C#截取指定长度中英文字符串方法
- 几种常见的字符串长度截取显示方法
- javascript中字符串截取的两种方法
- PHP针对中英文混合字符串长度判断及截取方法示例
- php 截取中英文混合字符串的方法