按照指定字符集以及字节数截取字符串

总结 Android 开发中截取字符串的方法 【代码】Android 开发中截取字符串的方法。 阅读详情

首先看下数据库字符集:

select lengthb(“丁”) from dual 为3则为utf-8 为2则为gbk。


package bytes;

import java.io.UnsupportedEncodingException;

public class BytesUTFAndGBK {

    /**

    * 按照指定字节数截取utf-8字符串

    * @param str

    * @param num

    * @return

    * @throws UnsupportedEncodingException

    */

    public String cutUTF(String str,int num) throws UnsupportedEncodingException {

        String result = null;

        int count = 0;

        byte[] buf = str.getBytes("utf-8");

        for (int i = num-1;i > =0;i--){

            if (buf[i] < 0){

                count++;

            }else{

                break;

            }

        }

        if (count % 3 == 0){//utf-8中文占3个字节

            result = new String(buf,0,num,"utf-8");

        }else if (count % 3 == 1){

            result = new String(buf,0,num-1,"utf-8");

        }else{

            result = new String(buf,0,num-2,"utf-8");

        }

        return result;

    }

    /**

    * 按照指定字节数截取GBK字符串

    * @param str

    * @param num

    * @return

    * @throws UnsupportedEncodingException

    */

    public String cutGBK(String str,int num) throws UnsupportedEncodingException {

        String result = null;

        int count = 0;

        byte[] buf = str.getBytes("GBK");

        for (int i = num-1;i > =0;i--){

            if (buf[i] < 0){

                count++;

            }else{

                break;

            }

        }

        if (count % 2 == 0){//GBK中文占2个字节

            result = new String(buf,0,num,"utf-8");

        }else{

            result = new String(buf,0,num-1,"GBK");

        }

        return result;

    }

}

Android 笔记: 字符串截取操作方法 5、indexOf(String str, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。4、indexOf(String str): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。//从第7位开始,截取第一次遇到“.”的字符串。//截取 0-最后一次遇到“.”的字符串。//截取 0-第一次遇到“.”的字符串。//截取“mno”之后的字符。 阅读详情

相关推荐

android byte字节数组转换十六进制字符串(物联网开发总结)

想起前段时间的物联网的外包开发,经常遇到通过wifi接受的数据,要通过转换成十六进制字符串,或者最后又是十进制数据。都是根据双方的协议来开发的。那么我发送过去的数据也需要,经过特殊转换成byte字节发过去,硬件那边收到不至于乱码的数据。 1、硬件调试发给android这边是十六进制数据 原始数据:68 38 38 68 A 72 78 55 34 12 43 23 01 07 Y 00 0

mmsx990的博客 2万+

字符和字符串(4)——C# 截取字符串:简单易懂,小白教程

几个经常用到的字符串的截取 string str="123abc456"; int i=3; 取字符串的前i个字符 str=str.Substring(0,i); // orstr=str.Remove(i,str.Length-i); 去掉字符串的前i个字符: str=str.Remove(0,i);// or str=str.Substring(i);...

qq_34573534的博客 513

从MATLAB到版图:手把手复现一篇16位1MSPS SAR ADC的完整设计流程(含Cadence与Verilog代码)

本文详细介绍了16位1MSPS SAR ADC的完整设计流程,从MATLAB行为级建模到Cadence电路实现,再到Verilog数字逻辑编码和版图生成。重点讲解了高精度逐次逼近型模数转换器的关键技术,包括电容阵列建模、校准算法实现、FFT性能验证以及混合信号仿真等,为工程师提供了实用的工业级设计指南。

weixin_28703507的博客 302

Android String字符串截取方法总结

Android String字符串截取方法总结 指定字符,截取字符串,返回字符串数组: String str = "abcd.efg.123456.hijk.345"; String[] strs=str.split("."); 指定索引号,截取字符串: 将字符串从索引号为3开始截取,一直到字符串末尾(索引值从0开始): String str = "abcdefghijklmnopqrstuvwxyz"; str.substring(3); 从索引号1开始到索引好7结束(并且不包

fenglolo的博客 1万+

PMSM单电阻采样避坑指南:如何解决非观测区电流重构难题(附ST专利分析)

本文深入解析了PMSM单电阻采样技术中的非观测区电流重构难题,并详细介绍了ST专利方案及移相法的工程实践。通过优化PWM调制策略和系统级调试方法,有效解决了相电流检测精度问题,为电机控制领域的工程师提供了实用的技术指南。

weixin_33737774的博客 632

基于pytest+Allure+Python+CANoe的汽车诊断自动化测试框架搭建实战

自动化测试是提升软件质量和研发效率的关键技术,其核心原理是通过脚本模拟人工操作,实现测试用例的自动执行与结果验证。在汽车电子领域,诊断服务测试是确保车辆ECU(电子控制单元)功能正常的重要环节,传统手动测试在面对海量用例和频繁回归时效率低下。本文聚焦于如何利用Python的pytest测试框架、Allure报告工具以及Excel数据驱动,构建一个与Vector CANoe仿真测试环境深度集成的自动化测试解决方案。该方案通过Python调用CANoe的COM接口,实现了诊断报文的自动发送与响应验证,并结合Al

weixin_30384217的博客 680

【原创】C#.Net中对中英文混排的字符串按照指定宽度截取排版

摘要:在C#.Net 这样的支持Unicode字符集的环境下,字符串处理时,英文、数字、汉字以及标点符号都是当着一个字符来看待的,但是英文、中文显示时所占宽度不一致,这样在需要按照指定宽度输出时就会遇到截取到的字符串显示出来长短参差不齐的。在网上看了些别人写的一些文章,没有找到自己想要的方式。下面我就给出C#.Net中中英文混排的字符串,如何来进行按照指定宽度来截取。 ...

anbinggao6661的博客 300

信息安全与技术——(十一)恶意代码检测与防范技术

恶意代码(Malicious Code )或恶意软件(Malware )主要是指以危害信息的安全等不良意图为目的的程序,它们一般潜伏在受害计算机系统中实施破坏或窃取信息。

m0_63853448的博客 5991

字符串按照字节截取

如果遇到截取字符串进行存储数据库时,注意⚠️:数据库中是按照字节存储的。所以在截取时需要注意 一般substring()是按照字符串的长度来进行的截取,所以有时即使你截取完入库时依旧会报,字段超长问题。 首先附上的是中英文在不同的编码下的字节长度: import java.io.UnsupportedEncodingException; public class EncodeTest { /** * 打印字符串在指定编码下的字节数和编码名称到控制台 .

cdliker的博客 2641

新手必看!Stata工具变量分析中的三大陷阱:如何正确解读LM统计量、CDW检验和Hansen J值

本文深度解析Stata工具变量分析中的三大核心检验:不可识别检验、弱IV检验和过度识别检验,帮助新手避开常见陷阱。详细解读LM统计量、CDW检验和Hansen J值的正确使用方法,提供实战案例和Stata操作指南,确保研究结论的可靠性。

weixin_29231027的博客 572

ArcGIS实战:利用IDW反距离权重法实现气象数据的批量空间插值

本文详细介绍了如何利用ArcGIS中的IDW反距离权重法实现气象数据的批量空间插值。通过实战案例和脚本示例,展示了IDW插值在气象数据分析中的高效应用,包括算法原理、参数调优、批处理自动化及常见问题解决方案,帮助用户快速生成连续分布的气象地图。

weixin_29051149的博客 240

关于C#字符串截取的研究

  对于网站程序员,一定会碰到字符串长度截取这个常用功能,比如我在操作快速建站网站时就遇到这样的问题,一般如果用SubString即可解决。但是当遇到中英文混合,或者单字节双字节的混合时,此方法总感觉有点不如意。   例如:abcdefghijkl字符串。当截取7个字符时。则为:abcdefg   当存在 abc啊哦哦defg 字符串,再截取7个字符时。则为:abc啊哦哦d   从以上我...

vbsvb 164

​非线性分析-增加位移量可能出现下面错误。虽然求解无法在所有时间点完成,但在某些点上仍能够求解部分结果。请参阅“帮助系统”中的故障排除,以了解更多信息详情。由于受约束,规划求解引擎无法收敛

基于收敛状态拆分载荷步‌:在已收敛的载荷步基础上,将未收敛的关键区域拆分为更细的子步,比如在载荷突变点前设置5~10个子步,逐步加载。替换冲突约束为弱约束‌:若存在约束冲突,将刚性约束替换为弱弹簧约束(刚度设为1e-6~1e-4),既限制刚体位移,又不影响结构的变形自由度,命令流:SPRING, NODE, K, 1e-6。部分区域约束完整,但存在未被约束的刚体自由度,或约束类型与大变形/接触逻辑冲突,比如某部件的位移约束在初始阶段有效,但大变形后约束位置脱离实际受力点,导致求解器在该阶段无法收敛。

qq_15963745的博客 145

java多字节字符串按字节截取

算法思路 1.先按照实际要截取的字节长度,复制一份字节数组 2.转换回字符串,计算字符长度resLen,并按这个长度截取原字符串 3.计算截取的字符串的字节数是否等于需求长度len,相等则直接返回,不相等,则在resLen的基础上减1再截取,则为需要的结果 此算法截取的结果为向前截取,即保证最终截取的字节长度...

weixin_34208283的博客 317

AI快速变现之路,AI视频创作

初期投入$3000(工具订阅+样片制作),重点攻克跨境电商和本地生活服务市场。关注2025年AIGC视频工具的API降价趋势(如Pika企业版折扣可达50%),建议与云服务商签订长期合作协议。

qq_29896351的博客 1982

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java根据字符集名称及指定字节长度将String截取为集合

java根据字符集名称及指定字节长度将String截取为集合

心寒的博客 1175

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java---练习(面试题) :字符串截取(1)

在java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符。 但对应的字节数不同,一个汉字占两个字节。 定义一个方法,按照指定的字节数来取子串。 如:对于“ab你好”,如果取三个字节,那么子串就是ab与“你”字的半个,那么半个就要舍弃。如果取四个字节就是“ab你”,取五个字节还是“ab你”。 上面给出的是在g...

weixin_33984032的博客 206

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

根据字节数获取字符长度 并截取

String.prototype.gblen = function() {             ///获得字符串实际长度,中文2,英文1         ///要获得长度的字符串         var realLength = 0, len = this.length, charCode = -1;         for (var i = 0; i             ch

刘hh的成长记录 937

js 根据字节截取

目的:按照字节截取字符串 (中文两个字节,英文一个字节) 实现: 假设截取8个字节 首先获得按字节截取时,应该截取的实际字符长度 //字节截取长度 function getBlength(str){ var l=str.length; var n=0; for(var i=0;i<l;i++){ n += str.charCo...

weixin_30266885的博客 501

HANA SQL字符串操作避坑指南:从编码转换到多语言处理的5个关键技巧

本文针对SAP HANA平台处理多语言数据的常见痛点,提供了5个关键的字符串操作避坑技巧。核心在于理解字符集、编码与HANA字符串类型的差异,优先使用NVARCHAR类型,并正确进行编码转换与安全截取,从而构建健壮的ETL数据处理流水线,有效避免乱码问题。

weixin_28363123的博客 528

怎么判断字符串里的中文字符

思考:解决问题之前,我们需要了解的是,在GB2312字符集的编码中汉字占2个字节,字母和其他字符占一个字节,而在utf-8中汉字占3,或者4个字节,字母占2个字节,由于utf一下占2个3个字节,一下占4个字节,不好拆分出指定的汉字加字母,所以才用GB2312的编码格式,汉字占2个字节,字母一个字节。 GB2312规定对收录的每个字符采用两个字节表示,第一个字节为“高字节”,对应94个区;第...

浮生若梦的博客 3217

javaScript 对于字符串字符长度的控制

写页面时,会有需求用户名称不要超过一行,或者描述文字不超过两行的要求,但是如果简单的使用 单纯使用username.slice(0,10)进行文字的控制的时候,发现效果不是很理想,因为中文和英文的字符长度不一样,导致获取的长度是不同的,所以使用字符长度来控制字数比较好,话不多上,上方法: byteLength (val, len = 25) { let b = len; // 规定长度 let init = 0; let newVal = ''; // 获取字符..

weixin_40046130的博客 3569

Java学习笔记——字符串

字符串的概念 字符串是对象型的数据,在Java语言中,处理文本主要应用的类是“String”类和“StringBuffer”类。如果是处理一些小的文本,建议使用“String”类,它会特别方便。如果使用String类来处理大型文本,会很消耗系统资源,所以Java语言特别引进了“StringBuffer”类。 字符串的赋值 String str1="very"; str1=str1+"good"; 字符串的处理类——String 声明方法如下所示: //字符串类型 字符串名=字符串内容 String str

qq_44219837的博客 262

爱奇艺前端面试题3

跪求各位大神轻拍,有好的方法的请大家相互分享,相互进步,谢谢。 请写一个字符串截取函数,按照最大140个汉字(280)个字符截断。 母的:汉字在js中是两个字节,而我们只想要140个字节的字符串 思路: curByteLen代表当前的字节数,byteSum代表想要截取的总字节数,len代表当前访问的字符串的位置。 while循环 遍历字符串,如果是两个字节的字符串,curBy...

weixin_30815427的博客 164

PHP面试题——字符串操作

这些函数通常直接将结果输出到浏览器或进行格式化。echo / print 语言结构,输出一个或多个字符串。printf 输出格式化字符串。sprintf 将格式化字符串写入变量,而不是直接输出。vprintf 输出格式化字符串,但参数以数组形式提供。vsprintf 将格式化字符串写入变量,参数以数组形式提供。print_r 打印关于变量的易于理解的信息(用于数组、对象等)。var_dump 显示关于一个或多个表达式的结构信息(包括类型和值)。

verifier的博客 966
上一篇: ServiceLoader装载类(SPI)
alittletree丶
博客等级 码龄8年 0粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值