根据字节数截取字符串


问题描述:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,例如“人abc”4,应该截为“人ab”;输入“人abc们”6,应该截为“人abc”,而不是截为“人ab+们的半个”

package com.wyl; /** * 截取字符串 * @author wyl * */
public class InterceptStr { /** * 判断字符是否为中文 * @param c * @return
     */
    public boolean isChinese(char c){ String sb = String.valueOf(c); //将字字符转化成字符串的形式
        return sb.getBytes().length == 1 ? false : true; } /** * 截取字符串 * @param str 字符串 * @param len 要截取的字节数 * @return 截取的字符串 */
    public String interceptStr(String str, int len){ if(len==0 || str==null || str.equals("")){ return ""; }else if(len<0){ System.out.println("参数len输入非法"); } char[] chars = str.toCharArray(); //将字符串转换成字符数组,中文占用两个字符,英文占用一个字符
        StringBuilder sb = new StringBuilder(); int count = 0; //用来截取当前截取的字符串的长度
        for(char cc:chars){ if(count < len){ if(isChinese(cc)){ //如果要求截取的字符串长度只差一,但是接下来是中文字符 //则截取子串中不包括这个中文字符
                    if(count+1 == len){ return sb.toString(); }else{ count = count+2; sb.append(cc); } }else{ count = count+1; sb.append(cc); } }else{ break; } } return sb.toString(); } public static void main(String[] args) { InterceptStr interceptStr = new InterceptStr(); String str = "abc王xb亚"; String s = interceptStr.interceptStr(str, -1); System.out.println(s); } }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM