您的位置:首页 > 其它

输入"我abc"输出4个字节的字符串

2012-08-02 12:20 330 查看
目: 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。   但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。

package com.sw.suanfa.first.ten;  
/** 
 * 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。   
 *  但是要保证汉字不被截半个, 
 *  如“我ABC”4,应该截为“我AB”, 
 *  输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。  
 * 
 *我的处理方式:截取字符串的一个字符,加入StringBuffer中,并取其字节数,并入当前获取字符的总长度中, 
 *如果总长度大于等于输入的长度,则返回StringBuffer的toString值。 
 *getSubString方法传入encoding值。UTF-8中文占3个字节,GBK占2个。结果有所不同,所以还是传入较好。 
 *没有通过判断charAt的值来判定是否为中文等特殊字符。 
 */ 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> public class SubStringWithChina {  

        public static void main(String[] args) throws Exception{  

              

            String a = "我ABC汉DEF" ;  

            int len = 6 ;  

            String encoding = "UTF-8" ;  

              

            System.out.println( getSubString(a, len,encoding) );  

            a = "我ABC";  

            len = 4 ;  

            encoding = "gbk" ;  

            System.out.println( getSubString(a, len,encoding) );  

        }  

          

        /** 

         *  

         * @param str 传入字符串 

         * @param len 截取字节数 

         * @param encoding 编码方式 

         * @return 返回截取后的字符串 

         * @throws Exception 

         */  

        public static String getSubString(String str,int len,String encoding) throws Exception{  

            if(str == null || str.length()<1) return null ;  

            if(len<1) return null ;  

            StringBuffer sb = new StringBuffer();  

            int all = 0 ;  

            for(int i=0;i<str.length();i++){  

                String tmp = str.substri
a7b5
ng(i,i+1);  

                sb.append(tmp);  

                byte[] tmpB = tmp.getBytes(encoding);  

                all +=tmpB.length ;  

                if(all>=len){  

                    break ;  

                }  

            }  

            return sb.toString() ;  

        }  

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐