编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按照字节数截取的字符串,代码如下所示:(转载)
String subString(String str,int len){
if(str == null && "".equals(str)){
return null;
}
//将字符串中的char数组转换成指定编码方式的byte数组的函数
byte[] strBytes = null;
try {
strBytes = str.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//得到字符串的长度,判断截取字符串的长度是否在判断的范围内,否则返回原串
int strLen = strBytes.length;
if(len >= strLen || len < 1){
return str;
}
int count = 0;
for(int i=0; i<len; i++){
//将每个字节数组转换为整型数,因为后面根据值的正负来判断是否为汉字
int value = strBytes[i];
//如果是汉字(负),则统计截取字符串中的汉字所占字节数
if(value < 0){
count++;
}
}
//依据判断给定的字符串是否含有汉字,利用String类的substring()方法来截取不同的长度
//根据所统计的字节数,判断截取到字符是否为半个汉字,奇数为半个汉字
if(count % 2 !=0){
//如果在截取长度为1时,则将该汉字取出,
//其他情况则不截取这里的截取长度则按字符长度截取(截取字节长度数-截取汉字字节数/2-截取到的半个汉字的字节数)
len = (len == 1)?len:len-count/2-1;
}else{
//截取字符长度为字节长度-汉字所占字节长度/2(汉字占两个字节)
len = len-(count/2);
}
return str.substring(0,len);
}
注意:获取字符串的bytes,bytes数组中汉字的byte值为负数,这是判断汉字的一个依据
分享到:
相关推荐
一个关于字符串匹配的算法,已经经过编译,希望对你有帮助
输入一个字符串,将输出该字符串最长对称子串及其长度,很精巧的算法
即使是10W条记录也能在1S没迅速完成你所得结果,中英混合的 如果想学习的朋友请关注下 欢迎大家下载
C++模板实现的数据结构字符串类,实现了字符串的拼接、删除、截取、转换、匹配、替换等常用功能,其中匹配算法使用了基于KMP的快速匹配算法。程序具有良好的编码风格和详细的算法注释。
c++代码,算法写的非常详细,需要的同学拿去,海师的别下,免得雷同。
核心思路:输入一个字符串和字节数,输出按字节数截取字符串, 其中要保证汉字不能被截半个字节,设计思路就是判断汉字占几个字节,通过string.valueof.getBytes()方法获取字符的字节数,之后遍历判断不要超过指定的...
题目为:首先将字符串中的*替换为0,然后将不规范化的数字规范化。 如:1.*,02.3*0,12*.210,012.5*,4*560.0,45*0 第一步替换:1.0,02.300,120.210,012.50,40560.0,4500 第二步规范化:1,2.3,120.21,12.5...
PHP通过正则表达式提取字符串中的手机号并判断运营商,简单快速方便,能提取多个手机号。下面通过本文实例代码给大家详细介绍,需要的的朋友参考下吧
当计算机的某个COM口有字符串数据进来时,自动触发事先设置好的字符串截取代码,处理后直接写入MySQL数据库某个数据表的一条新记录中,同时自动用一个时间字段记录下写入数据库的时间。 版本V2.0新增了可任意截取...
5. 截取字符串, 如果该字符串是“abc我的”,当截取的字节数是3时候就是"abc',如果是4,依然是 abc,也就是说。不能打印出半个汉字 6. 设计4个线程,其中两个线程每次对j增加1,另外两个线程每次对j减少1 7. 给你...
截取snort2.8中最新使用的ac_bnfa算法,采用状态机实现,详细请看readme.txt.
本文实例讲述了Python实现针对含中文字符串的截取功能。分享给大家供大家参考,具体如下: 对于含多字节的字符串,进行截断的时候,要判断截断处是几字节字符,不能将多字节从中分割,避免截断后乱码 下面给出utf8和...
本文实例讲述了Python 字符串、列表、元组的截取与切片操作。分享给大家供大家参考,具体如下: demo.py(字符串、列表、元组的截取): ...demo.py(字符串截取(切片),[开始索引:结束索引:步长]): #
字符串过长,不雅观,如何实现多余文字街去掉并用省略号显示,苦思冥想多日,发现使用CSS就可轻松搞定,下面将经验心得与大家分享一番,望帮助更多的失足新手
对于给出的字符串,可截取其前缀和后缀,求能组成的最长回文串。 思路: 正常来说暴力的思路是先匹配前缀pre和后缀suf,找到第一个不匹配的l和r,然后在由l开始从左向右求最长的回文串palindrome,以及由r开始从右向...
版本一:按分隔符进行比较 算法思路:按分隔符截取搜索字符串循环与待搜索字符进行比较 代码如下: USE [Fly] GO –参数:@inStr 待搜索字串,@fndStr 搜索字串,@doc 分隔符 — 例:select dbo.fSearch(‘1,2,3,4,5,...
字符串截取 计算几何: 1.叉乘法求任意多边形面积 2.求三角形面积 3.两矢量间角度 4.两点距离(2D、3D) 5.射向法判断点是否在多边形内部 6.判断点是否在线段上 7.判断两线段是否相交 ...
截取字符串中两个特定唯一字符之间的内容 截取指定长度字符串 折线图 按照比例改变图片大小(非生成缩略图) 收藏主页 数据验证类 数组转换成XML格式 日期计算 是否为电子邮件格式 柱形统计图 检查是否为一...
varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...