编写一个截取字符串的函数,按字节截取

来源:互联网 发布:通信工程和java 编辑:程序博客网 时间:2024/05/16 00:45
/** * 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串(subString()是按字符截取的字符串)。但是要保证汉字不被截半个。 * 按字节截取,则中文占2个字节,其它的1个字节(日文等呢--不考虑)。 * 注意:这里的输入指的的是函数的参数,输出指的作为返回值输出或作为参数输出。 * 而有的时候,笔试时,需要编写所有程序而非仅仅一个函数,则输入可能指的是测试用例从键盘输入,而不是等号直接赋值。 * *思路:按GBK编码获取----按Unicode编码获取 * */package test;import java.io.UnsupportedEncodingException;public class Test {//false,EN;true,CNpublic 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 stubString 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 blocke1.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 blocke.printStackTrace();}}}

原创粉丝点击