Java分割中英文,并且中文不能分割一半?
最近准备入其他坑位。在面试过程中,遇到下面这题笔试题,拿出来分享分享。

题目: 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC 汉的半个”。
思路: 每个文件编码格式不一致,如UTF-8、GBK等。其中,UTF-8 中文用三个字节表示,GBK 中文用两个字节表示。并且中文的字节是负数的。可以根据这个原理,把字符串转化为字节数组,判断最后字符是否为中文。如果是英文,则直接分割返回。否则,循环遍历字节数组,并作相应的负数统计并进行求模。
代码实现:
package com.geshanzsq;import java.io.UnsupportedEncodingException;/** * @author geshanzsq*/public class SubString {public static void main(String[] args) throws UnsupportedEncodingException {String srcStr1 = "我ABC";String srcStr2 = "我ABC汉的DEF";splitString(srcStr1, 4);splitString(srcStr2, 6);}public static void splitString(String str,int size) throws UnsupportedEncodingException {//判断是否为空if(str==null){System.out.println("splitString is null");return;}//判断分割位置是否小于等于0if(size<=0){System.out.println("截取字节长度必须大于0");return;}//默认UTF-8 中文一般三个字节表示,gbk两个字节,UTF-8变化就是%3,gbk变化就是;yte[] bytes = str.getBytes("gbk");//如果截取长度大于bytes长度,则直接打印字符串if(size >= bytes.length){System.out.println("splitString=" str);return ;}//如果是中文,bytes为负数。最后一个不是中文,则直接分割if(bytes[size-1] > 0){String splitString = new String(bytes,0,size,"gbk");System.out.println("splitString=" splitString);return;}//字节负数统计并进行求模int num = 0;//循环到需要分割的长度,后面的不需要for(int i = 0 ; i < size; i ){if(bytes[i]<0){num ;num = num % 2;}}String splitString = new String(bytes,0,size-num,"gbk");System.out.println("splitString=" splitString);}}运行结果:
splitString=我ABsplitString=我ABC
-
09.24
OpenClaw多代理协同工作模式配置实用指南
-
09.24
Muse AI 是否需要邀请码?免费额度与使用资格说明
-
09.24
Muse Spark 开发凭证申请:Meta Model API 创建与调用步骤
-
09.24
Muse AI App 2026 使用评测:功能表现、优势与限制
-
09.24
Muse Spark 1.2 Contributor 模型说明:价格、数据约定与用途
-
09.24
Muse Spark 1.1 API 费用解析:输入、输出与缓存计费
推荐专题
热门阅读
-
- 三国大冒险吕布厉害吗
- 08.14
-
- Linux常用实用命令
- 08.14
-
- Java分割中英文,并且中文不能分割一半?
- 08.14
-
- 人工智能训练师职业全解析:零基础入行指南
- 08.14
-
-
- AI排版在数字化时代改变设计行业的潜力与挑战
- 08.14
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏