博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
含有中文字符串的截取问题!
阅读量:6651 次
发布时间:2019-06-25

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

问题:
    字符串:music<<美丽的草原我的家>>。该字符串的长度即str.length()为:17,而目前需要存入数据库对应的字段长度为:16。所以必须对字符串进行截取。而前16个字节中,“原”字只有半个。这样存入数据库确对会出现“?”。所以必须判断是否是半个汉字,即只能存入“music<<美丽的草”。
分析:
    汉字是双字节编码,它为了能够与英文字符分开,每个字节的最高位一定为1。如果是汉字,那么这个字节就是小于0的。这个函数就是通过这一原理实现的。所以要通过getBytes()转化为byte型,再比较与零的大小。  
getBytes()是把一个字符串转成一个byte数组,因为计算机的数据都是基于字符的,也就是说一个字符串实际上就是一个字符流,因此可以转为字符数组。
程序:
    public  static  String  getStr(String  src,  int  len)  {  
       if  (src  ==  null)              return  null;  
       if  (src.getBytes().length  <=  len)    return  src;  
 
       byte[]  s  =  src.getBytes();  
       int  flag  =  0;  
       for(int  i=0;i<len;++i){  
         if(s[i]  <  0)  flag++;    
       }  
       if(flag%2!=0)  len--;          
 
       byte[]  d  =  new  byte[len];  
       System.arraycopy(s,  0,  d,  0,  len);  
       return  new  String(d);  
   }  

转载于:https://www.cnblogs.com/swingboat/archive/2005/05/31/165394.html

你可能感兴趣的文章
10.SpringMVC注解式开发-处理器方法的参数
查看>>
MFC 自绘按钮 消息响应
查看>>
【C#小知识】C#中一些易混淆概念总结(八)---------解析接口 分类: ...
查看>>
数值类型的保留指定小数位
查看>>
mysql如何添加用户
查看>>
版本管理(转)
查看>>
C# checkboxlist的使用
查看>>
Java 学习笔记 五 -- Jedis
查看>>
02-CSS基础与进阶-day9_2018-09-12-21-02-40
查看>>
MyEclipse编辑xml文件没有提示
查看>>
Activity
查看>>
跨浏览器的事件对象——EventUtil
查看>>
自定义Toast
查看>>
CentOS 报no acceptable C compiler found in $PATH的解决办法
查看>>
Objecttive-C各种问题
查看>>
Python中的"克隆" - 深浅Copy
查看>>
抛出异常
查看>>
新的启程~
查看>>
对于一个段错误(核心已转储)问题的解答,错误的英文翻译是segment fault(core dumped)...
查看>>
BZOJ3862Little Devil I——树链剖分+线段树
查看>>