JAVA实现中英文混合文字友好截取功能
2024-09-08 18:13:21
package com.xxx.utils;
import com.google.common.collect.Lists;
import java.util.List;
/**
* 字符工具类
*/
public final class CharUtil {
public CharUtil() {
}
/**
* 实际字符串分隔
* @param charStr 需要分隔的字符串
* @param catIndex 分隔长度
* @return List
*/
private static String[] cut(String charStr,int catIndex){
String sb = "";
int charLength = 0;
for (int i = 0;i<charStr.length() ;i++ ){
int asciiCode = charStr.codePointAt(i);
if (asciiCode >=0 && asciiCode<=255){
charLength+=1;
} else{
charLength+=2;
}
if (charLength<=catIndex) {
sb += charStr.charAt(i);
}else{
break;
}
}
return new String[]{charStr.substring(sb.length()),sb};
}
/**
* 把字符串按照字符的长度进行分隔
* @param charStr 需要分隔的字符串
* @param catIndex 分隔长度
* @return List
*/
public static List<String> cutString(String charStr, int catIndex){
List<String> result = Lists.newArrayList();
boolean endCond = true;
while (endCond){
String[] forCutChar = cut(charStr, catIndex);
result.add(forCutChar[1]);
if(forCutChar[0].length() > catIndex){
charStr = forCutChar[0];
}else{
endCond = false;
if(StringUtil.isNotBlank(forCutChar[0])){
result.add(forCutChar[0]);
}
}
}
return result;
}
}
最新文章
- 测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率
- python day1 常用模块
- 使用docker-hub
- 关于hadoop2.4.1伪分布式系统的搭建
- 分别取商和余数:divmod(a, b)
- HIBERNATE - 符合Java习惯的关系数据库持久化(精华篇)
- sql的集合运算
- ECMAScript6之Set结构和Map结构
- .NET Core 2.0 开源Office组件 NPOI
- javaweb中的关于编码问题总结
- powerdesign
- ThinkPHP5零基础搭建CMS系统(一)
- SQL优化 MySQL版 -分析explain SQL执行计划与Extra
- C#线程安全使用(一)
- Multiple vulnerabilities in DASAN H660RM GPON router firmware
- C++ code:for loop designs
- Android 音视频深入 一 AudioRecord录音生成pcm转换为wav(附源码下载)
- node 慕课笔记
- eclipse 中 import sun.misc.BASE64Decoder; 报错
- dubbo注册中心zookeeper出现异常 Opening socket connection to server 10.70.42.99/10.70.42.99:2181. Will not attempt to authenticate using SASL (无法定位登录配置)