`
lan13217
  • 浏览: 501740 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

java处理 列表因英文字符和汉字字符宽度不一致 长度

    博客分类:
  • Java
阅读更多
	public String bSubstring(String s, int length) throws Exception{
		byte[] bytes = s.getBytes("Unicode");
		int n = 0; // 表示当前的字节数
		int i = 2; // 要截取的字节数,从第3个字节开始
		for (; i < bytes.length && n < length; i++){
			// 奇数位置,如3、5、7等,为UCS2编码中两个字节的第二个字节
			if (i % 2 == 1){
				n++; // 在UCS2第二个字节时n加1
			}else{
			// 当UCS2编码的第一个字节不等于0时,该UCS2字符为汉字,一个汉字算两个字节
				if (bytes[i] != 0){
					n++;
				}
			}
		}
		// 如果i为奇数时,处理成偶数
		if (i % 2 == 1){
			// 该UCS2字符是汉字时,去掉这个截一半的汉字
			if (bytes[i - 1] != 0){
				i = i - 1;
			// 该UCS2字符是字母或数字,则保留该字符
			}else{
				i = i + 1;
			}
		}
		return new String(bytes, 0, i, "Unicode");
	}
分享到:
评论
2 楼 lan13217 2010-10-15  
2个纯英文字母=一个汉字长度 = 1(length参数)
1 楼 okjacky 2010-10-14  
你好, 我测试了一下 好像纯英文字符存在问题。谢谢。

相关推荐

    java中判断字段真实长度的实例(中文2个字符,英文1个字符)

    Java中判断字段真实长度的实例是针对如何在编程时考虑到中英文字符在长度上的差异,并且给出一个能够在字符串处理时反映出这种差异的实用方法。这个实例中提到的是,中文字符占用的空间为两个英文字符的空间。这个...

    前后台实现精确截取指定长度字符串(考虑全角半角)

    这个问题在处理多语言环境下的文本时尤为重要,因为不同语言中的字符宽度可能有所不同,这直接影响到文本的显示效果。 ### 一、问题背景 在实际开发过程中,我们经常需要对用户输入或者数据库查询结果中的字符串...

    正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度

    全角字符是指宽度为一个全角(即两个半角)的字符,包括中文字符和其他特殊字符。可以通过扩展上面的正则表达式来检测全角字符: ```javascript str.match(/[\uFF01-\uFF5E\uFFE0-\uFFEE]/g); ``` 这个正则表达式的...

    C++将文本字符串转换成BMP图片

    2. **分配内存并初始化像素数据**:根据文本字符串的长度和所选字体大小,计算出需要的像素数组大小。然后,遍历每个字符,根据字符的ASCII值或Unicode编码将其转换为相应的像素颜色。这通常涉及到字符的渲染,可以...

    字符转码,gb2312 usc2 ,utf-8

    字符编码是计算机处理文本的基础,不同的编码方式对字符集的支持和表示形式有所差异。在IT领域,特别是文本处理和数据传输中,理解并熟练运用各种字符编码至关重要。本篇文章将详细探讨标题和描述中提到的“gb2312”...

    尚硅谷_宋红康_计算机字符编码2

    9. **OEM字符集**:随着计算机的发展,ASCII字符集不能满足非英语国家的需求,OEM(Original Equipment Manufacturer)字符集衍生出来,这些字符集根据不同的地区和制造商进行了扩展,以支持当地语言的字符。...

    javajsp中 中文问题详解

    它能够高效地编码各种字符宽度,包括1字节、2字节、3字节和4字节。例如,汉字“你”的Unicode码点为`U+4F60`,在UTF-8中会被编码为`11100100 10111101 10100000`,即`E4 BD A0`。 ### 3. String与byte[]之间的转换 ...

    自定义车牌号键盘_Android(Java)

    对于车牌号键盘,我们需要包含数字0-9以及一些特殊字符如汉字、字母等。 3. **监听按键事件**:在`InputMethodService`中,我们需要重写`onKey`方法来处理按键点击事件。根据按下的是哪个键,我们发送相应的输入...

    Shift JIS编码表

    在ASCII模式下,Shift JIS与基本的7位ASCII码兼容,这使得它能够处理英文和其他基于ASCII的字符。而在Shift模式下,通过一个“Shift”键的切换,编码可以扩展到更高范围,以容纳更多的日文字符,包括平假名、片假名...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

    java的验证码

    NumericAndEnglishChar, // 数字和英文字符 ChineseChar // 中文字符 } ``` ##### 2. 生成随机字符串 为了生成不同类型的验证码,我们需要创建一个方法来生成随机字符串。这个方法需要根据指定的类型和长度生成...

    后台代码优化建议.doc

    8. **字符串截取优化**:对于字符串长度的精确计算,应考虑到不同字符类型的宽度,避免使用简单的长度判断,尤其是处理包含汉字的字符串时。 9. **解耦合与提高代码重用**:通过使用Map传递参数,减少对具体参数个...

    2021-2022计算机二级等级考试试题及答案No.17230.docx

    16. 文本字段容量:文本类型字段在数据库中最多可容纳255个英文字符或127个汉字。 17. 参照完整性:实施参照完整性后,子表无法输入主表中不存在的值。 18. 键盘类型:常见键盘有101键和104键两种,区别在于功能键...

    Java使用jxl包写Excel文件适合列宽实现

    1. 中文汉字占位长度比英文字符长,一般来说,一个中文汉字在Excel中的占位长度可视为两个英文字母的长度。 2. 我们需要针对每列数据进行最大长度的统计,即遍历每列所有单元格中的内容,找出该列中最长的字符串,...

    2021-2022计算机二级等级考试试题及答案No.3606.docx

    2. 字符串长度:在编程中,len(str(k))函数用于计算字符串的长度,k=12.5,转换为字符串后,会以科学记数法显示,即'1.25e+01',因此长度为5。 3. 循环语句:For...To...Step...Next循环的次数由起始值、结束值和...

    2021-2022计算机二级等级考试试题及答案No.5454.docx

    17. **字段名称命名规则**:字段名称不能以数字开头,但可以包含数字、字母、汉字和空格,长度不超过64个字符。 18. **查询设计隐藏字段**:在查询设计器中,取消字段的“显示”选项可以不让该字段在结果中显示。 ...

    2021-2022计算机二级等级考试试题及答案No.9321.docx

    12. 文本字段容量:文本类型的字段最多可容纳255个英文字符或127个汉字,因为一个汉字占用两个字节。 13. C语言循环与switch语句:给定的C程序执行后,输出结果是7,因为case 2和case 3共享同一条语句,所以k=5+2+3...

Global site tag (gtag.js) - Google Analytics