Java 按指定长度截取字符串,考虑全角半角
来源:互联网 发布:dj网络红歌 编辑:程序博客网 时间:2024/05/19 19:44
于用 Java 来截取指定长度的字符串,我在网上看到很多帖子和方法,大都是说用 substring() ,但是如果考虑到全角半角的话,这是怎么也达不到期望值的。因为之前自己也用到过,所以把自己整理好的一些东西拿出来,希望能和大家分享下。如果还有更好更简洁的方法,望大侠们指点一二。
注:所有测试都是基于该值已通过必须输入的检查。
1. subByStrLenth() 在不考虑全角的情况下,即假定该字符串都是半角的。
2. subByFullWidth() 如果已确保该值都是由全角字符,即字符都是全角且指定长度是大于 0 的偶数的情况下。
3. subByStrByte() 考虑全角半角的截取,且舍掉半个汉字后,长度不足的情况下是否要在右边补空格。
Java代码
- // 按指定的长度来截取字符串,不管全角半角,一个字符一个长度。
- public static String subByStrLength(String value, int length) {
- return value.length() > length ? new String(value.substring(0, length)) : value;
- }
- // 按指定的长度来截取字符串,前提是字符串是全角的,指定长度是大于0的偶数。
- public static String subByFullWidth(String value, int length) {
- return value.getBytes().length > length ? new String(value.getBytes(), 0, length) : value;
- }
- // 按指定的长度下,考虑字符的全角半角,且当舍掉最后半个汉字后,长度不足的情况下是否要在右边补空格。
- public static String subByStrByte(String value, int length, boolean paddingSpace) {
- String valueTemp = "";
- // 指定的长度下,考虑字符的全角半角,最后的汉字。
- if (value.getBytes().length > length) {
- for (char c : value.toCharArray()) {
- if (valueTemp.getBytes().length <= length) {
- valueTemp += c;
- if (valueTemp.getBytes().length == length) {
- break;
- } else if (valueTemp.getBytes().length > length) {
- char[] charTemp = valueTemp.toCharArray();
- valueTemp = "";
- for (int i = 0; i < charTemp.length - 1; i++) {
- valueTemp += charTemp[i];
- }
- break;
- }
- }
- }
- value = valueTemp;
- }
- // 指定的长度下,长度不足的情况是否要在右边补空格。
- if (paddingSpace) {
- StringBuffer valueBuffer = new StringBuffer(value);
- for (int i = 0; i < length - value.getBytes().length; i++) {
- valueBuffer.append(" ");
- }
- return valueBuffer.toString();
- }
- return value;
- }
- // 字符串的截取测试
- public static void main(String[] args) {
- String str1 = "字符串的截取";
- String str2 = "字符串的截取test";
- System.out.println(subByStrByte(str2, 7, true));
- System.out.println(subByStrByte(str2, 7, false));
- System.out.println(subByStrLength(str2, 7));
- System.out.println(subByFullWidth(str1, 6));
- }
第一个输出结果是带空格的字符串“字符串 ”。
运行结果:
字符串
字符串
字符串的截取 t
字符串
0 0
- Java 按指定长度截取字符串,考虑全角半角
- 按指定长度截取字符串,考虑全角半角
- 区分全角和半角的字符串指定长度截取(或填充)
- JS/JQ截取字符串长度的函数处理不同半角全角英文字符功能
- Java字符串全角转半角
- 用javascript限制input输入长度(考虑全角半角)
- 用javascript限制input输入长度(考虑全角半角)
- java 字符串处理(全角转半角,半角转换全角)
- 截取指定长度字符串
- 一个C#中截取指定长度字符串的方法(含盖半全角问题)
- 把字符串按半角字符算半个字符,全角字符算一个字符来截取
- java统计字符串中全角、半角个数
- 确定包含全角和半角字符的字符串长度
- java按指定的字节Byte的起始位置截取长度截取字符串
- 字符串全角半角转换
- freemarker截取指定长度字符串
- FreeMaker 截取指定长度字符串
- freemarker截取指定长度字符串
- C++成员变量初始化顺序
- Linux学习笔记(vim使用命令)
- Machine Learning学习笔记(个人原因暂停更新)
- android中service得编程
- php在线非注册聊天系统的开发-初
- Java 按指定长度截取字符串,考虑全角半角
- 关于awt 不实用第三方类库 实现 图片旋转,变形等处理
- windows版Android studio 下svn checkout项目时发生错误
- hdu 4557 非诚勿扰
- 文章标题
- KMP算法
- HDOJ Eddy's picture 1162
- [译] Web Components 是什么?它为什么对我们这么重要?
- windows下安装Django