Java实现String按指定字节数截取将 String str ="全球新股及流动性机会8号" (截取后12个字节)作为Find_Short_Name(简称)
package company.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 != "" ? Bytes("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))
字符串长度必须大于0
return null;
int len = 0;
char c;
// 遍历String的每⼀个Char字符,计算当前总长度
// 如果到当前Char的的字节长度⼤于要截取的字符总长度,则跳出循环返回截取的字符串。
for (int i = 0; i < CharArray().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() ; }
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论