`

统一中英文长度问题

阅读更多

 

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

        

代码如下:

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 ,收工

 

 

 

 

分享到:
评论

相关推荐

    中英文字符转换解决乱码问题

    ### 中英文字符转换解决乱码问题 #### 1. 乱码问题根源 乱码通常发生在字符编码不匹配的情况下。例如,当系统试图用错误的字符集(如ASCII)解读非ASCII字符(如中文字符)时,就会出现乱码。这在处理不同来源或...

    js判断字符长度及中英文数字等

    关于JavaScript判断字符长度及中英文数字等内容的知识点,主要围绕在编写代码时如何根据不同的字符集计算字符串的长度。由于不同字符占用的字节空间不同,传统的字符串长度判断方式并不适合于国际化需求,特别是在...

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

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

    人教版二年级上册数学《统一长度单位认识厘米用厘米量》.ppt

    在正式引入厘米这一长度单位之前,课程首先展示了一个现实中的问题:当没有统一的长度单位时,对物体的测量就会产生混乱。想象一下,如果我们用7个一角硬币、5枚回形针或17个小正方体来测量同一物体的长度,由于这些...

    中英文字符编码查询

    《中英文字符编码查询》是一款高效实用的工具软件,专为用户提供便捷的字符编码查询服务。它涵盖了ASCII、区位码、GB2312、GBK内码、Unicode以及UTF-8等多种编码形式,适用于对字符编码有深度需求的用户,如编程人员...

    pkcs#11标准中英文档

    PKCS#11标准的中英文文档对于想要从事相关开发工作的人员来说,是必不可少的学习资料。 **标准内容概述** 1. **模块类型和对象类型**:PKCS#11标准定义了两种主要类型——模块(Module)和对象(Object)。模块是...

    时间格式的转换(中英文环境转换)

    ### 时间格式的转换(中英文环境转换) #### 知识点概述 1. **设置语言环境的简单实现**:在程序开发过程中,特别是在涉及到日期与时间格式化的情况下,需要能够根据不同的语言环境来正确地显示时间。这通常可以...

    车载诊断标准ISO_15765(中英文).zip

    ISO 15765是国际标准化组织(ISO)制定的一系列车载诊断(On-Board Diagnostics, OBD)通信协议标准,主要针对道路车辆...通过提供的中英文文档,学习者可以更全面、深入地理解这一标准,从而更好地应用到实际工作中。

    ISO15765-1-2-3-4全套中英文版本

    这个标准在汽车行业中非常重要,因为它定义了如何通过车载诊断(OBD,On-Board Diagnostics)系统来交换数据,确保不同制造商的车辆能够与诊断设备或服务中心进行有效通信。 ISO15765-1主要涵盖了传输层的规范,...

    企业网站中英文

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

    JAVA中汉字字符转化为英文字符

    - **UTF-8**: 一种常用的Unicode编码方式,可变长度,兼容ASCII,并且能表示Unicode中的所有字符。 ##### 2. 方法 `toTureAsciiStr` 该方法的目标是将汉字转化为对应的英文字符。其工作原理如下: - **参数**: - ...

    http协议详解(含中英文两版电子书)

    本资源包含HTTP协议的中英文双语版电子书,对于学习和理解HTTP协议具有极大的帮助。 HTTP协议的基础是请求-响应模型。当用户在浏览器中输入URL并按下回车键时,浏览器会向服务器发送一个HTTP请求。请求由三部分组成...

    JAVA代码规范(中英文对照).rar

    Java代码规范是编程实践中至关重要的一个方面,它不仅有助于提高代码的可读性和可维护性,还能提升团队协作效率。本资源包含两部分:Java代码规范的中文版和英文版,以及Apache项目的代码规范的中文版和英文版。以下...

    wireshark操作主界面中英文对照

    ### Wireshark操作主界面中英文对照知识点详解 #### 一、引言 Wireshark是一款功能强大的网络数据包分析工具,广泛应用于网络故障排查、安全审计及教学研究等领域。对于初学者而言,熟悉其主界面及其各项功能是至关...

    SAE J1939协议SAE J1939规范中英文资料合集.zip

    本资料合集包含了SAE J1939的中英文规范,对于理解和应用该协议具有极高的参考价值。 1. **SAE J1939协议概述** SAE J1939协议是由美国汽车工程师学会(SAE)制定的,它定义了车辆内部不同电子控制单元(ECUs)...

    ISO 15765英文全套

    ISO 15765是国际标准化组织发布的一套标准,主要关注汽车诊断通信协议,特别是在车载诊断系统(OBD...通过阅读和学习"ISO 15765英文全套"中的资料,可以全面了解这个标准的细节,提升在汽车诊断和维修方面的专业能力。

    iso 15765 全套1-4中英文 iso-15765-3

    4. ISO 15765-4: 这部分涉及安全相关的问题,如数据加密和认证,确保在通信过程中数据的完整性和安全性,防止恶意攻击。 压缩包中的文件包含了ISO 15765系列标准的各个部分,包括不同年份修订的版本,比如2004年和...

    WWH-OBD ISO27145-3中英文版

    ISO 27145-3是国际标准化组织(ISO)发布的一项标准,它是关于道路交通车辆——世界范围内统一车载诊断(WWH-OBD)通信要求实施的系列标准中的第三部分。该标准涉及WWH-OBD的通用消息字典,即车辆在进行故障诊断、...

    ISO14229 + ISO15765 全套中文+英文版.rar

    ISO14229 和 ISO15765 是汽车电子行业中两个重要的国际标准,它们在汽车诊断通信和车辆网络管理...提供的"ISO14229 + ISO15765 全套中文+英文版"资源,对于汽车行业从业者来说,是理解和应用这两个标准的重要参考资料。

    http协议rfc2616中英文双版

    首部字段在请求和响应中传递额外的信息,如Accept指示客户端接受的媒体类型,Content-Type定义主体的MIME类型,Cookie和Set-Cookie用于管理会话信息。 5. **URI与URL** URI(Uniform Resource Identifier)是统一...

Global site tag (gtag.js) - Google Analytics