2020-12-30

Java实现String按指定字节数截取

字符串处理

将 String str ="全球新股及流动性机会8号" (截取后12个字节)作为Find_Short_Name(简称)

package com.company.cn.util;import java.io.UnsupportedEncodingException;/** * @description: * @author: itw_qiwb * @date: Created in 2020/12/29 16:42 * @version: 1.0 * @modified By: */public class StringSubUtils { /**  * 计算当前String字符串所占的总Byte长度  * @param args 要截取的字符串  * @return 返回值int型,字符串所占的字节长度,如果args为空或者""则返回0  * @throws UnsupportedEncodingException  */ public static int getStringByteLenths(String args) throws UnsupportedEncodingException {  return args != null && args != "" ? args.getBytes("GBK").length : 0; } /**  * 按字节截取字符串 ,指定截取起始字节位置与截取字节长度  * @param orignal 要截取的字符串  * @param start 截取开始位置  * @param count 截取长度  * @return 截取后的字符串  * @throws UnsupportedEncodingException  *    使用了JAVA不支持的编码格式  */ public static String substringByte(String orignal, int start, int count) {  // 如果目标字符串为空,则直接返回,不进入截取逻辑;  if (orignal == null || "".equals(orignal))   return orignal;  // 截取Byte长度必须>0  if (count <= 0)   return orignal;  // 截取的起始字节数必须比  if (start < 0)   start = 0;  // 目标char Pull buff缓存区间;  StringBuffer buff = new StringBuffer();  try {   // 截取字节起始字节位置大于目标String的Byte的length则返回空值   if (start >= getStringByteLenths(orignal))    return null;   int len = 0;   char c;   // 遍历String的每一个Char字符,计算当前总长度   // 如果到当前Char的的字节长度大于要截取的字符总长度,则跳出循环返回截取的字符串。   for (int i = 0; i < orignal.toCharArray().length; i++) {    c = orignal.charAt(i);    // 当起始位置为0时候    if (start == 0) {     len += String.valueOf(c).getBytes("GBK").length;     buff.append(c);     if (len < count){      continue;     } else      break;    } else {     // 截取字符串从非0位置开始     len += String.valueOf(c).getBytes("GBK").length;     if (len >= start ) {      buff.append(c);      if (len < start + count){       continue;      }else {       break;      }     }    }   }  } catch (UnsupportedEncodingException e) {   e.printStackTrace();  }  // 返回最终截取的字符结果;  // 创建String对象,传入目标char Buff对象  return new String(buff); } /**  * 截取指定长度字符串 正向  * @param orignal 要截取的目标字符串  * @param count 指定截取长度  * @return 返回截取后的字符串  */ public static String substringByte(String orignal, int count) {  return substringByte(orignal, 0, count); } /**  * 截取指定长度字符串 逆向  * @param orignal 要截取的目标字符串  * @param count 指定截取长度  * @return 返回截取后的字符串  */ public static String substringByteReverse (String orignal, int count) {  String targetStr = new StringBuffer(orignal).reverse().toString();  return new StringBuffer(substringByte(targetStr, 0, count)).reverse().toString() ; }}

 









原文转载:http://www.shaoqun.com/a/504537.html

跨境电商:https://www.ikjzd.com/

noon:https://www.ikjzd.com/w/259

敦煌网:https://www.ikjzd.com/w/189


字符串处理将Stringstr="全球新股及流动性机会8号"(截取后12个字节)作为Find_Short_Name(简称)packagecom.company.cn.util;importjava.io.UnsupportedEncodingException;/***@description:*@author:itw_qiwb*@date:Createdin2020/12/2
捷汇:捷汇
淘粉吧官网:淘粉吧官网
厦门鹭江夜游怎么走?:厦门鹭江夜游怎么走?
无锡慕湾拓展基地介绍?无锡慕湾拓展训练有什么项目?:无锡慕湾拓展基地介绍?无锡慕湾拓展训练有什么项目?
日本游记攻略 - :日本游记攻略 -

No comments:

Post a Comment