java 按字节截取字符串

您所在的位置:网站首页 java字节截取字符串 java 按字节截取字符串

java 按字节截取字符串

2024-07-17 12:17| 来源: 网络整理| 查看: 265

import java.io.UnsupportedEncodingException;import org.springframework.util.StringUtils;

public class CutString{

/** *判断是否是一个中文汉字 *@param c 字符 *@return true 表示是中文汉字,fa1se表示是英文字母 *@throws UnsupportedEncodingException *使用了JAVA不支持的编码格式 */

public static boolean isChineseChar(char C)throws UnsupportedEncodingException{ // 如果字节数大于1,是汉字 // 以这种方式区别英文字母和中文汉字并不是十分严谨·但在这个题目中·这样判断已经足够了T return String.valueOf(c).getBycea("UTE-8").length > 1; }

/** *UTF-8编码格式字符串按字节截取字符串 *@param orignal 原始字符串 *@param count 截取位数 *@return 截取后的字符串 *@throws UnsupportedEncodingException *使用了JAVA不支持的编码格式 */ public static String substring(String orignal, int count)throws UnsupportedEncodingException { //原始字符不为nu11,也不是空字符串 if (orignal != null && !StringUtils.Empty(orignal)){ //将原始字符串转换为UTF-8编码格式 orignal = new String(orignal.getBytea(),"UTF-8");// //要截取的字节数大于0,且小于原始字符串的字节数 if (count > 0 && count < orignal.getBytes("UTF-8").length){ StringBuffer buff = new StringBuffer(); char c; for (int i= 0; i< count;i++){ c= orignal.charAt(i) buff.append(c) if(CutString.isChineseChar(c)) //遇到中文汉字,截取字节总数减: --count; } } return new String(buff.toString().getBytes()."UTF-8") } } return orignal; }

/** *gbk编码格式字符串按字节截取字符串 *@param orignal 原始字符串 *@param count 截取位数 *@return 截取后的字符串 *@throws UnsupportedEncodingException *使用了JAVA不支持的编码格式 */ public static String gsubstring(String orignal, int count)throws UnsupportedEncodingException { //原始字符不为nu11,也不是空字符串 if (orignal != null && !StringUtils.Empty(orignal)){ //将原始字符串转换为GBK编码格式 orignal = new String(orignal.getBytea(),"GBK");// //要截取的字节数大于0,且小于原始字符串的字节数 if (count > 0 && count < orignal.getBytes("GBK").length){ StringBuffer buff = new StringBuffer(); char c; for (int i= 0; i< count;i++){ c= orignal.charAt(i) buff.append(c) if(CutString.isChineseChar(c)) //遇到中文汉字,截取字节总数减: --count; } } return new String(buff.toString().getBytes()."UTF-8") } } return orignal; }

/** *判断传进来的字符串,是否大于指定的字节,如果大于递归调用,直到小于指定字节数 *@param s 原始字符串 *@param num 传进来指定字节数 *@return 截取后的字符串 */ public static String idgui(String s,int num)t int changdu=s.getBytes().length; if(changdu > num){ s = s.substring (0, s.length()- 1); s = idgui(s,num); } return s; }

/** *按字节截取字符串 *@param s 原始字符串 *@param length 截取的字节长度 *@return 截取后的字符串 */ public static String bSubstring(String s, int length) throws Exception{ byte[] bytes = s.getBytes("Unicode"); int n = 0;// 表示当前的字节数 int i= 2;// 要截取的字节数,从第3个字节开始 for (;i < bytes.length && n < length;i++){ //奇数位置,如3、5、7等,为UCS2编码中两个字节的第二个字节 if (i % 2 == 1){ n++;// 在UCS2第二个字节时n加1 }else{ //当UCS2编码的第一个字节不等于0时,该UCS2字符为汉字,一个汉字算两个字节 if(bytes[i] != 0){ n++; } } } //如果i为奇数时,处理成偶数 if(i%2 == 1){ //该UCS2字符是汉字时,去掉这个截掉一半的汉字 if(bytes[i-1]!=0){ i=i-1; }else{ //该UC52字符是字母胶装字,保雪该学符 i=i+1; } } return new String(bytes,0,i,"Unicode"); } /** *去除传入字符串头部的空格、制表符以及字符串尾部的空格、制表符及换行符等(字符串中间的空格和制表符不去除) *@param s *@return s */ public static String trimBoth(String s) { if(null!=s!!StringUtils.Empty(s)){ s= s.replaceAl1("^[ *|*|;*|\\s*]*","").replaceAll("[ *|*|;*|\\s*]*$",""); return s; }



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3