/**
* 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串(subString()是按字符截取的字符串)。但是要保证汉字不被截半个。
* 按字节截取,则中文占2个字节,其它的1个字节(日文等呢--不考虑)。
* 注意:这里的输入指的的是函数的参数,输出指的作为返回值输出或作为参数输出。
* 而有的时候,笔试时,需要编写所有程序而非仅仅一个函数,则输入可能指的是测试用例从键盘输入,而不是等号直接赋值。
*
*思路:按GBK编码获取----按Unicode编码获取
*
*/
package test;
import java.io.UnsupportedEncodingException;
public class Test {
//false,EN;true,CN
public static boolean isChinese(char c) throws UnsupportedEncodingException{
return String.valueOf(c).getBytes("GBK").length>1;//false,EN;true,CN
}
public static String cutString(String inStr, int num) throws UnsupportedEncodingException{
StringBuffer outStr = new StringBuffer();
int nlen = inStr.getBytes("GBK").length;//GBK编码长度
if(inStr!=null && !"".equals(inStr)){
if(num>0 && num<=nlen){
//获取num个字节
char[] arr=inStr.toCharArray();
for(int i=0; i<num; i++){
char c = arr[i];
//判断c是否是中文
if(isChinese(c)){
num--;
}
outStr.append(c);
}
return outStr.toString();
}
}
return inStr;
}
/**
* @param args
* @throws UnsupportedEncodingException
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s ="我gfr是Chin ese!";
System.out.println(s.length());
try {
String t = new String(s.getBytes(),"GBK");//还是转为字符串,和s 一样的
System.out.println(t.length());
System.out.println(t);
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
System.out.println("cut0"+cutString(s,0));
System.out.println("cut1"+cutString(s,1));
System.out.println("cut2"+cutString(s,2));
System.out.println("cut3"+cutString(s,3));
System.out.println("cut4"+cutString(s,4));
System.out.println("cut5"+cutString(s,5));
System.out.println("cut6"+cutString(s,6));
System.out.println("cut7"+cutString(s,7));
System.out.println("cut8"+cutString(s,8));
System.out.println("cut9"+cutString(s,9));
System.out.println("cut10"+cutString(s,10));
System.out.println("cut11"+cutString(s,11));
System.out.println("cut21"+cutString(s,21));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
编写一个截取字符串的函数,按字节截取
最新推荐文章于 2020-12-10 23:36:27 发布