-
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() ; } }
来源:https://www.cnblogs.com/qiwb/p/StringUtil.html
最新更新
带有参数的装饰器
类装饰器
django中的auth模块与admin后台管理
python的日期处理
字符串常用方法
基本数据类型概述
python-map()函数基本用法
python带你实现任意下载AcFun视频数据~
bbs项目之注册功能
变量的定义和使用
三大常用数据库事务详解之三:事务运行
三大常用关系型数据库事务详解之二:基
三大关系型数据库事务详解之一:基本概
MongoDB常用命令(2)
MongoDB基本介绍与安装(1)
SQLServer触发器调用JavaWeb接口
SQL Server索引的原理深入解析
SqlServer2016模糊匹配的三种方式及效率问题
SQL中Truncate的用法
sqlserver 多表关联时在where语句中慎用tri
VB.NET中如何快速访问注册表
ASP.NET中图象处理过程详解
Vue(1)Vue安装与使用
JavaScript 语言入门
js将一段字符串的首字母转成大写
纯原生html编写的h5视频播放器
H5仿原生app短信验证码vue2.0组件附源码地
TypeScript(4)接口
TypeScript(3)基础类型
TypeScript(2)WebStorm自动编译TypeScript配置