在web开发中,会遇到这样一个问题,想让某个内容全部保持在一定长度范围内,未超出的行全部显示,超长的行只允许显示一定的长度,结尾用省略号代替。

粗想一下,实现这个功能很容易,直接取字符串的长度(用length()方法),如果超出,就用substring()方法截取一段,然后再在结尾处加上省略号。但实际上这样做是不行的,至少说是某种程度上得不到我们想要的结果,因为一个英文字母和一个汉字用lenth方法得到的值都是1,这不错,但是在显示时,一个汉字占两个字母的位置,这样即使我们截取了指定长度的字符串,但实际显示起来是参差不齐的。下面是我对这个问题给出的解决方案。

/**

* @(#)StringUtil.java

*

*

* @author Examda

*

*/

public class StringUtil{

public StringUtil() {

}

public static void main(String[] args){

String str="12345 英afa五左,大有枝节一碟sd.sdfas 2008-11-22";

System.out.println(StringUtil.omitString(str,30));

str="12345 英afa五左,大有枝节s一碟sd.sdfas 2008-11-22";

System.out.println(StringUtil.omitString(str,30));

str="12345 英afa五左,大有枝节a";

System.out.println(StringUtil.omitString(str,30));

str="12345 英afa五左,大有枝节基";

System.out.println(StringUtil.omitString(str,30));

}

/*

* 计算字符串的字节长度(字母数字计1,汉字及标点计2)

*

*/

public static int byteLength(String string){

int count = 0;

for(int i=0;iif(Integer.toHexString(string.charAt(i)).length()==4){

count += 2;

}else{

count++;

}

}

return count;

}

/*

* 按指定长度,省略字符串部分字符

* @para String 字符串

* @para length 保留字符串长度

* @return 省略后的字符串

*/

public static String omitString(String string,int length){

StringBuffer sb = new StringBuffer();

if(byteLength(string)>length){

int count = 0;

for(int i=0;ichar temp = string.charAt(i);

if(Integer.toHexString(temp).length()==4){

count += 2;

}else{

count++;

}

if(countsb.append(temp);

}

if(count==length-3){

sb.append(temp);

break;

}

if(count>length-3){

sb.append(" ");

break;

}

}

sb.append("...");

}else{

sb.append(string);

}

return sb.toString();

}

}

执行结果是:

12345 英afa五左,大有枝节一...

12345 英afa五左,大有枝节s ...

12345 英afa五左,大有枝节a

12345 英afa五左,大有枝节基

JAVA技巧(长字符串按指定长度截取).doc

下载Word文档到电脑,方便收藏和打印[全文共1301字]

编辑推荐:

下载Word文档

java截取固定大小图片_JAVA技巧(长字符串按指定长度截取)相关推荐

  1. 截取固定大小图片css,css-使不同大小的图片在固定大小的容器中居中

    HTML示例如下: 方法一: .imgbox{ position: relative; width: 240px; height: 240px; } .imgbox img{ position: ab ...

  2. java截取固定大小图片_识文精灵(ocrwiz):如何把在线文字识别(图片转文字)OCR的互动体验提升到极致...

    截图-->粘贴图片(Ctrl+V)-->拷贝结果(Ctrl+C),只需要几秒钟,就可以快速识别并得到图片中的文字,体验行云流水.指哪打哪的感觉,这就是识文精灵(OcrWiz)给大家带来的体 ...

  3. php截取字符串几位数,php按照指定长度截取字符串的代码

    php按照指定长度截取字符串的代码,如果字符串超出了指定的长度,会用...替换,不过这段代码不支持中英文的区分 //if a string is longer than the defined len ...

  4. java主界面设置背景图片_java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改)...

    java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改) 关注:223  答案:4  mip版 解决时间 2021-01-26 22:09 提问者非莪莫属 2021-01 ...

  5. java base64字符 转图片_JAVA实现图片与base64字符串之间的转换详解

    import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ...

  6. java 获取排列组合_Java获得一个数组的指定长度排列组合算法示例

    本文实例讲述了Java获得一个数组的指定长度排列组合算法.分享给大家供大家参考,具体如下: package demo; import java.util.Stack; /** * JAVA获得一个数组 ...

  7. java实现三个数字的随机组合_JAVA编程实现随机生成指定长度的密码功能【大小写和数字组合】...

    本文实例讲述了java编程实现随机生成指定长度的密码功能.分享给大家供大家参考,具体如下: import java.util.random; public class passwordcreate { ...

  8. java字符串长度_Java中String字符串的最大长度?

    1.Java中的字符串String最大长度,编译期如果是javac编译就是65534.如果绕过javac编译的限制,其最大长度可以达到u2类型变达的最大值65535. Oracle JDK的编译工具J ...

  9. python 分隔符截取字符串_python指定分隔符截取字符串

    python截取指定分隔符后面的字符串 例如:notifydata[1] =G20-杭州峰会放假时间 notifydata[2] =G20-杭州峰print('-'.join('G20-杭州峰会-放假 ...

最新文章

  1. 做个md5查询站(2)初步设计
  2. php跳转隐藏url参数,.htaccess从URL中删除index.php并隐藏参数键
  3. Linux搜索查找命令合集
  4. NIO 之 ByteBuffer实现原理
  5. jquery ajax 滚动加载数据
  6. 深入浅出理解HOG特征---梯度方向直方图
  7. mysql limit 越大越慢_mysql 优化之14:php mysql limit 分页优化,页面值越大查询越慢...
  8. 一滴血、15分钟!钟南山指导研制试剂盒有望快速检测出结果
  9. PSD分层可临摹模板|无线端电商页面UI设计几个常见的错误
  10. 通过yum install 方式安装snmp包遇到的问题,gsk7bas64-7.0-4.44.x86_64 has missing libstdc++.so.*等
  11. python datetime strptime_python datetime模块strptime/strptime format常见格式命令_施罗德_新浪博客...
  12. HCIE Security 防火墙URL过滤技术 备考笔记(幕布)
  13. Java中,异常处理try catch的作用域是局部的
  14. DNS   案例1 案例5轮询
  15. php-elasticsearch 单条、批量插入数据
  16. spring boot 用dbcp2连接数据库出现(Access denied for user 'root'@'localhost' (using password: YES)) 异常
  17. 【智慧城市】GIS数据获取-获取道路/水路数据
  18. 振南的 znFAT(前言)
  19. tkmybatis更新无效
  20. 可以快速提高编程能力的9个建议

热门文章

  1. 斗图?教你用 Python 制作表情包
  2. 证明:无理数乘以非零的有理数仍然是无理数
  3. 计算机弹音乐薛之谦的歌曲,薛之谦 万能音符(The Key) 薛之谦歌曲,薛之谦mp3在线试听 - 5nd音乐网...
  4. 使用Windows批处理+ImageMagick 实现批量处理图片
  5. matlab批量修改图片的大小_MATLAB实现批量处理图像图片的两种方法
  6. 2021好用的CI/CD工具推荐清单
  7. 从asm磁盘头自动备份看11g到12c的新特性--Physical_metadata_replication
  8. Android TextView中划线、下划线、跑马灯的简单使用
  9. 兵棋---棋盘绘制算法(六边形阵列算法)
  10. 代码可读性为什么重要啊....人家读不出来不是更安全吗?