题目描述:
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节数截取的字符串。但是要保证汉子不被截半个。
分析:
在java语言中,默认使用的unicode编码方式,即每个字符占两个字节,因此可以用来存储中文。虽然String是由char所组成,但是它采用了一种更加灵活的方式来存储,即英文占用一个字符,中文占用两个字符,采用这种存储方式的一个重要作用就是可以减少所需要的存储空间,提高存储效率。
实验代码:
package lock;
public class T15
{
public static boolean isChinese(char c)
{
String sb=String.valueOf(c);
return sb.getBytes().length>1;
}
public String truncateStr(String str,int len)
{
if(str==null||str.equals("")||len==0)
return "";
char[]chrArr=str.toCharArray();
StringBuilder sb=new StringBuilder("");
int count=0;
for(char cc:chrArr)
{
if(count<len)
{
if(isChinese(cc))
{
if(count+1==len)
return sb.toString();
count =count+2;
sb=sb.append(cc);
}
else
{
count=count+1;
sb=sb.append(cc);
}
}
else
{
break;
}
}
return sb.toString();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
T15 spliStr=new T15();
String sb="你ABCD好WXYZ";
System.out.println(spliStr.truncateStr(sb,6));
}
}