A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,

  应该输出为"我ABC"而不是"我ABC+汉的半个"。

import java.io.UnsupportedEncodingException;

/**
* 截取的要点:
* 1.首先将字符串转换成字节数组,再将字节数组的每个元素拿出来,判断有无负数(一个汉字为两个负数),即有汉字
* 2.len:这个len是将字符串转换成字节数组的要截取的长度,
*   如"我ABC你"的字节数组长度为7(-50,-46,65,66,67,-60,-29),而截取的是6(-50,-46,65,66,67,-60),
* 3.对截取的字节数组(-50,-46,65,66,67,-60)统计负数的个数
* 4.String里的方法substring方法将双字节的汉字当成一个字节的字符(UCS2字符)处理了,而我们的字节数组一个函数
*   就是两个字节,所以要想用substring方法,还需要将负数的个数count除以二才可以
* @author Administrator
*
*/
public class TestJq {
public static 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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马