`

统一中英文长度问题

阅读更多

 

最近因为在做一个项目要求很多都是英文,所以这就涉及到在页面上截取统一长度时中英文不一样长的问题。网上找了找,搞了个工具类,拿出来记录一下吧。

        

代码如下:

package com.iflytek.util;

import java.io.UnsupportedEncodingException;

/**
 * @author xdwang
 * 
 * @ceate 2012-7-19 下午08:15:11
 * 
 * @description
 * 
 */
public class ChinaEngLengthHelper {

	/**
	 * @descrption
	 * @author xdwang
	 * @create 2012-7-19下午08:15:11
	 * @param args
	 */
	public static void main(String[] args) {
		String chinaStr = "大家好,我叫王旭东!这是一个解决中英文长度的公用方法。";
		String chinaOrEnglishStr = "Hello,我叫王旭东!This is a solution 中英文长度的公用方法。";
		String englishStr = "Hello,my name is xdwang! This is a solution to the length of the public methods in both Chinese and English.";
		System.out.println(subStrHelper(chinaStr, 10, "..."));
		System.out.println(subStrHelper(chinaOrEnglishStr, 10, "..."));
		System.out.println(subStrHelper(englishStr, 10, "..."));
	}

	/**
	 * @descrption 将给定的字符串按着给定的截取长度截取 <br>
	 *             注意一个汉字占2个字节
	 * @author xdwang
	 * @create 2012-6-29下午03:32:25
	 * @param text
	 *            需要截取的字符串
	 * @param length
	 *            截取的长度,这里的是汉字length的长度,中英文长度和汉字length长度一致
	 * @param endWith
	 *            截取后字符串后缀,一般以...结束
	 * @return 截取后的字符串
	 */
	public static String subStrHelper(String text, int length, String endWith) {
		int textLength = text.length();
		int byteLength = 0;
		StringBuffer returnStr = new StringBuffer();
		for (int i = 0; i < textLength && byteLength < length * 2; i++) {
			String str_i = text.substring(i, i + 1);
			if (str_i.getBytes().length == 1) {// 英文
				byteLength++;
			} else {// 中文
				byteLength += 2;
			}
			returnStr.append(str_i);
		}
		try {
			// getBytes("GBK")每个汉字长2,getBytes("UTF-8")每个汉字长度为3
			if (byteLength < text.getBytes("GBK").length) {
				returnStr.append(endWith);
			}
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return returnStr.toString();
	}

}

 

结果:

大家好,我叫王旭东!...
Hello,我叫王旭东!Th...
Hello,my name is xdw...

 

大家从结果上看还是差不多吧。 Ok ,收工

 

 

 

 

分享到:
评论

相关推荐

    (原创)仿ERWIN中英文匹配功能加强版

    数据库建模工具ERWIN中的中文字段匹配成英文字段的功能非常实用,...使用本组件,用户在设置物理模型之前,把所有字段的中文列出来,并设置中英文对照参数表,即可实现对所有字段进行英文匹配,实现物理建模的规范化。

    企业网站中英文

    4.修正了产品编号长度不够的问题; 5.企业简介的栏目自动生成; 6.新闻资讯的分类自动生成,后台更改新闻类别,前台新闻分类自动生成; 7.完善下载说明的详细信息; 8.所有图片的宽度和高度都会按比例自己调整,不会让...

    达梦数据库_SQL语言手册

    规标识符的最大长度是个英文字符或个汉字。正规标识符不能是保留字 正规标识符的例子:, 表 定界标识符的标识符体用双引号括起来时,标识符体可以包含任意字符,特别地,其中使用 连续两个双引号转义为一个双引号 ...

    OpenCart 2.0.1.1 中文外贸版.zip

    OpenCart 2.0.1.1 中文外贸版在英文版2.0.1.1基础上修改衍生而来,遵循OC的mvc架构,根据以往用户提出的使用习惯,我们把后台语言替换为简体中文,前台还是保持英文。主要包括(免费版提供15个功能点):1、名字与...

    客户端统一验证JavaScript函数库及示例源码

    另外,其他函数如数据长度的验证,是验证内容的实际字节的长度,即汉字两个字节英文及数字两个字节,判断依据ASCII值,计算机在设计字符存储的时候就是超过一个字节的ASCII字符都是以两个字节存放的。同时...

    OpenCart 中文免费版 v3.6

    优惠价格(在后台设置)增加人民币并作为默认币种修改了重量长度等单位修改了部分3个字符的长度变为2个字符长度验证清除国外慢链接,同时也起到加速作用将原twitter、Facebook分享脚本替换为国内百度分享安装包预装...

    富士_高压三相异步电动机英文版样本.pdf

    富士_高压三相异步电动机英文版样本pdf,先进的技术和改进  先进的电气、机械设计方法。在发展中,有限元分析应用于电磁性能,  辐射和冷却电路等,和样品电机已通过验证。  一个完整的力学计算程序应用于保证电机...

    使用Java实现一个基于内存的英文全文检索搜索引擎【100012394】

    实现一个基于内存的英文全文检索搜索引擎,需要完成以下功能: 功能 1:将指定目录下的一批.txt 格式的文本文件扫描并在内存里建立倒排索引,这里面包含必须的子功能包括: 读取文本文件的内容; 将内容切分成一个...

    OpenCart 中文社区版 v3.0.2.1.zip

    3.名与姓的合并,国内统一叫姓名; 4.国内省,地市汉化加入西藏、台湾,添加区县数据; 5.删除地址2,保留地址1为收货地址; 6.隐藏税前价格,仅显示商品、优惠价格; 7.增加人民币并作为默认币种; 8.修改重量...

    opencart2.0中文版

    此版本在英文版2.0.1.1基础上修改衍生而来,遵循OC的mvc架构,根据国内用户习惯进行了大量的修改工作。 主要包括(免费版一共15个功能点): 1、名字与姓氏合并,国内统一叫 姓名 2、国内省,地市汉化(最重要的是...

    网软天下企业网站管理系统

    修改了新闻评论中英文不能自己动换行的错误; 4.修正了产品编号长度不够的问题; 5.企业简介的栏目自动生成; 6.新闻资讯的分类自动生成,后台更改新闻类别,前台新闻分类自动生成; 7.完善下载说明的详细...

    学习英语背单词小精灵套装版English Word Eidolon Ark vers

    可以对单词进行中英文排序。独特的表格浏览单词模式,使视野更宽阔。还提供一个特别的单词显示平台。 英文边看边学是一款把英文文章中的词汇对照出来中文的软件,他的功能不在于对照英中词汇,而在于他可以与...

    手机短信控件 V5.0

    该控件支持中文,英文以及中英文混合短信。 5.0版新增加功能: 1.提供短信发送状态报告. 2.支持串联短信(长度大于一条短信的,自动分成多条发送,接收方则作为一条短信显示). 3.支持电话功能:拨出,...

    opencart 中文版 v2.0.1.1 国内专用.zip

    opencart 中文版此版本在英文版2.0.1.1基础上修改衍生而来,遵循OC的mvc架构,根据国内用户习惯进行了大量的修改工作。   主要包括(免费版提供15个功能点): 1、名字与姓氏合并,国内统一叫 姓名 2、国内省,...

    TinySite企业网站系统2010 v1.3.0代码

    2、修正标签:@CutStr中英文截取长度不统一的问题 3、修正文档单个删除、回收站批量删除存在的问题 4、修改PostBar空用户名时默认取用户的IP地址 5、语言包做了压缩调整、语言包解析由原来的xmlDom解析改为正则解析

    《计算机网络技术基础与应用》复习题.doc

    简单邮件传输协议的英文缩写为( ) A.FTP B.TELNET C.SMTP D.POP 10.IPv4中,源地址或目的地址的长度为( ) A.16位 B.32位 C.64位 D.128位 11.表示层的目的是处理有关被传送数据的( ) A.表示问题 B.应用问题 C.传输...

    Excel表格的35招必学秘技(图文最终版).

    8、让中、英文输入法智能化地出现 9、让“自动更正”输入统一的文本 10、在Excel中自定义函数 11、表头下面衬张图片 12、用连字符“&”来合并文本 13、快速打印学生成绩条 14、Excel帮你选函数 15、同时查看不同工作...

    基础大数据实用标准与描述(参考大数据格式表示法).doc

    约束:必选 数据类型:字符串 说明:数据格式的表示如下表所示: 值域X围 定义:根据相应属性中所规定的表示形式、格式、数据类型和最大与最小长度而决定 的数据元的允许实例表示的集合。该集合可以根据名称、引用来源、...

    网软天下企业网站管理系统.rar

    4.修正了产品编号长度不够的问题; 5.企业简介的栏目自动生成; 6.新闻资讯的分类自动生成,后台更改新闻类别,前台新闻分类自动生成; 7.完善下载说明的详细信息; 8.所有图片的宽度和高度都会按比例自己调整,不会...

Global site tag (gtag.js) - Google Analytics