【JAVA】字符截取包含中文字符情况

编程入门 行业动态 更新时间:2024-10-11 09:30:48

【JAVA】<a href=https://www.elefans.com/category/jswz/34/1771063.html style=字符截取包含中文字符情况"/>

【JAVA】字符截取包含中文字符情况

问题

需求:给定一个中英文字符串,截取固定长度后存储数据
情况:中文占用2个字节,英文1个

	//org.apachemons.lang3.StringUtils.substring(columnVal, 0, lenMax)public static String substring(String str, int start, int end) {if (str == null) {return null;} else {if (end < 0) {end += str.length();}if (start < 0) {start += str.length();}if (end > str.length()) {end = str.length();}if (start > end) {return "";} else {if (start < 0) {start = 0;}if (end < 0) {end = 0;}return str.substring(start, end);}}}

结果

Test==>字符长度============4
Test==>字符长度============原始::测试
Test==>字符长度============4
Test==>字符长度============截取::测试

解决

	/*** 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1** @param  value* @param  length* @return*/public static String getStringLengthBySub(String value, int length) {//String str, int start, int endif (StringUtils.isBlank(value)) {return value;}String chinese = "[\u0391-\uFFE5]";int tc = 1;int s = 0;String str = "";/* 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 */while (tc < length) {String temp = value.substring(s, s + 1);//如果是中文if (temp.matches(chinese)) {//计数+2tc += 2;} else {tc += 1;}s++;str = str + temp;}return str;}
Test==>字符长度============4
Test==>字符长度============原始::测试
Test==>字符长度============2
Test==>字符长度============截取::测

参考

JAVA 中英文混合截取,中文算2字符,英文1字符,始终保持固定长度

更多推荐

【JAVA】字符截取包含中文字符情况

本文发布于:2023-11-15 12:51:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1599953.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符   中文   情况   JAVA

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!