將 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() ; } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/242702.html
標籤:其他
上一篇:每年都說“世上最難就業季”,并不是作業難找,而是自滿的大學生越來越多。
下一篇:設計模式-工廠模式
