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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© java木 中级黑马   /  2014-6-3 02:10  /  790 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

我写了一个方法感觉实在是太笨了,希望有大侠能给出简便高效的方法
//编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,
        //如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
        public static void getbyte(String s){
                /*
                 * 把要判断的字符串转换成这种形式:汉字就是--*我。字母仍是字母的形式
                 * 注:字节数只考虑0-9,。
                 */
                StringBuilder sb=new StringBuilder();
                String ziMuJi="qwertyuiopkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM";
                char ch[]=s.toCharArray();
                for(int i=0;i<ch.length-1;i++){
                        if(!ziMuJi.contains(ch[i]+"")){
                                sb.append('*').append(ch[i]);
                        }
                        else{
                                sb.append(ch[i]);
                        }
                }
                int ByteNo=Integer.parseInt(s.substring(s.length()-1, s.length()))-1;
                //如果字节数索引对应的是*则取0到索引处字串,即舍掉汉字。去除*打印出来
                if(sb.charAt(ByteNo)=='*'){
                                String result=sb.substring(0,ByteNo).replace("*","");
                        System.out.println(result);
                }else{
                        //如果字节数索引对应的不是*则取0到索引处+1字串,即保留汉字。去除*打印出来
                        if(sb.charAt(ByteNo)=='*'){
                        String result=sb.substring(0,ByteNo+1).replace("*","");
                       
                        System.out.println(result);
                }
        }
}

0 个回复

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