您的位置:首页 > 其它

改进后的汉字截取处理程序(含测试用例)

2017-04-06 15:56 204 查看
java 代码

package org.danlley.util;   

  

public class StringTools{   

    /**  

     * 说明:如果需要截取的长度大于字符串实际可以被截取的长度,则按实际可截取长度进行截取,  

     *      此时不用考虑汉字问题。如果要截取的长度在实际可截取长度的许可范围内,则需要考虑  

     *      汉字的问题。具体做法是,先把字符串转换成字符数组,然后对每个字符进行判断,如果  

     *      字符所占用的长度是“2”的整数倍,则认为这个字属于非英文字符。  

     * @param str  待处理字符串  

     * @param index  处理的首位置  

     * @param length  长度  

     * @return  

     * @throws java.lang.Exception  

     */  

    public String subString(String str,int index,int length) throws Exception{   

        try{   

            String returnStr=null;   

            byte[] bytes=str.getBytes();   

            int len=bytes.length;   

            boolean lenFlow=((len-index)>length)?(true):(false);   

            if(lenFlow){   

                String tmpStr;   

                StringBuffer tmpBfStr=new StringBuffer();   

                int curlen=0;   

                int j=0;   

                while(j<length){   

                    char mychar=str.charAt(j);   

                    tmpStr=String.valueOf(mychar);   

                    if(tmpStr.getBytes().length%2==0){   

                        j+=2;   

                        if(j>length){   

                            break;   

                        }   

                    }else{   

                        j++;   

                    }   

                    tmpBfStr.append(tmpStr);   

                }   

                returnStr=tmpBfStr.toString();   

            }else{   

                returnStr=str.substring(index,str.length());   

            }   

            return returnStr;   

        } catch(Exception e){   

            e.printStackTrace();   

            e.getMessage();   

            throw new Exception(e);   

        }   

    }   

  

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

        try{   

            String message="test中dd文dsaf中男大3443n中国43中国人";   

            StringTools stringTools=new StringTools();   

            String str=stringTools.subString(message,0,5);   

            System.out.println(str);   

        } catch(Exception ex){   

            ex.printStackTrace();   

            throw new Exception(ex);   

        }   

    }   

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