【正确答案】在Java语言中,默认使用的Unicode编码方式,即每个字符占用两个字节,因此,可以用来存储中文。虽然String是由char所组成的,但是它采用了一种更加灵活的方式来存储,即英文占用一个字符,中文占用两个字符。采用这种存储方式的一个重要作用就是可以减少所需的存储空间,提高存储效率。根据这个特点,可以采用如下代码来完成题目的要求:
public class Test
{ //判断字符c是否是中文字符,如果是返回true
public static boolean isChinese(char c)
{
String sb=String.valueOf(c);
return sb.getBytes().length>1?true:false;
}
public String mmcateStr(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)
{
Test splitStr=new Test();
String sb="人ABC们DEF";
System.out.println(splitStr.truncateStr(sb,6));
}
}
程序的运行结果为:
人ABC
【答案解析】