当前位置: 代码迷 >> J2SE >> 汉字如何截取,一半摄取,满2就取
  详细解决方案

汉字如何截取,一半摄取,满2就取

热度:279   发布时间:2016-04-24 18:05:34.0
汉字怎么截取,一半摄取,满2就取
如:
String s = "adsf爱上嘎sdf";

getword(int t){
//t=4就返回adsf
//t=5就返回adsf
//t=6就返回adsf爱
}

------解决方案--------------------
Java code
import java.io.UnsupportedEncodingException;public class StringSpliter {    static void getword(String str, int length) {        try {            byte[] bt = str.getBytes("gbk");            if (bt[length] < 0) {                System.out.println(new String(bt, 0, --length, "gbk"));            } else {                System.out.println(new String(bt, 0, length, "gbk"));            }        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        String str = "adsf爱上嘎sdf";        StringSpliter.leftStr(str, 6);    }}
------解决方案--------------------
Java code
public class TestCut {    static String s = "adsf爱上嘎sdf";    public static void main(String[] args) {    for (int len = 0; len < 12; len++) {        System.out.println("长度为"+ len + " : "+ getword(s,len));//分别对长度为0,1,...11进行测试    }    }        static String getword(String s , int t){    StringBuffer sb = new StringBuffer();    for(int i=0; i<s.length()&&i<t; i++){        char c = s.charAt(i);        if(isChinese(c)){        i++;//多加一次        if(i<t)sb.append(c);        }        else sb.append(c);    }    return sb.toString();    }        // /判断字符是否属于中文    // GENERAL_PUNCTUATION 判断中文的“号    // CJK_SYMBOLS_AND_PUNCTUATION 判断中文的。号    // HALFWIDTH_AND_FULLWIDTH_FORMS 判断中文的,号    public static boolean isChinese(char c) {    Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);    if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS        || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS        || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A        || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION//""        || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION//.        || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {//,        return true;    }    return false;    }    }/*output:长度为0 : 长度为1 : a长度为2 : ad长度为3 : ads长度为4 : adsf长度为5 : adsf长度为6 : adsf爱长度为7 : adsf爱长度为8 : adsf爱嘎长度为9 : adsf爱嘎d长度为10 : adsf爱嘎df长度为11 : adsf爱嘎df*/
  相关解决方案