根據字節數截取字符串


問題描述:編寫一個截取字符串的函數,輸入為一個字符串和字節數,輸出為按字節截取的字符串。但是要保證漢字不被截半個,例如“人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