博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串劈分(含中文)
阅读量:6342 次
发布时间:2019-06-22

本文共 506 字,大约阅读时间需要 1 分钟。

题目:从含有中文字符的长度为N的字符串中截取M个字符,中文字符不能被分成两半。如从"我a爱中华abc我爱中国def,我ABC汉" 中取4个字符结果应该为"我a",而不是"我a爱"。

TIP:

* 将字符转码为GBK[一个中文包含两个字符且均小于0]

* 标识符标记前一个字节小于0作为辅助判断依据
* 当前字节小于0且前一次小于0【标识符判断】则为一个中文, 否则改变标识符的状态

public static int trimGBK(byte[] buf, int n) {	int num = 0;	boolean bChineseFirstHalf = false;	for (int i = 0; i < n; i++) {		if (buf[i] < 0 && !bChineseFirstHalf) {			bChineseFirstHalf = true;		} else {			num++;			bChineseFirstHalf = false;		}	}	return num;}

  

转载于:https://www.cnblogs.com/cugb-2013/p/3662435.html

你可能感兴趣的文章
bootstrap随笔点击增加
查看>>
oracle 中proc和oci操作对缓存不同处理
查看>>
[LeetCode] Spiral Matrix 解题报告
查看>>
60906磁悬浮动力系统应用研究与模型搭建
查看>>
指纹获取 Fingerprint2
查看>>
SB阿里云,windows2012r2无法安装.net3.5
查看>>
函数的继承
查看>>
黑盒测试用例设计方法&理论结合实际 -> 场景法
查看>>
快速打开软件以及文件夹
查看>>
CSS选择符
查看>>
剑指offer---19--***-顺时针打印矩阵
查看>>
关于数组随机不重复的思路
查看>>
oracle赋值问题(将同一表中某一字段赋值给另外一个字段的语句)
查看>>
Windows 安装 Jenkins 2.6
查看>>
计算一个点是否在一个区域中
查看>>
正则表达式
查看>>
淘宝面试题:有一个一亿节点的树,现在已知两个点,找这两个点的共同的祖先。...
查看>>
EntityFramework 6.x多个上下文迁移实现分布式事务
查看>>
高版本SQL备份在低版本SQL还原问题
查看>>
一键安装最新内核并开启 BBR 脚本
查看>>