以指定编码对字符串进行截取
时间:2022-06-14
本文章向大家介绍以指定编码对字符串进行截取,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
假设有字符串“朱元璋”,截取限定的长度为7字节
截取编码为utf-8 结果为“朱”
截取编码为gb2312时 结果为“朱”
字符串为“hello朱元璋”,截取限定的长度为13字节
截取编码为utf-8 结果为“hello朱元”
这里的问题就是gbk编码占位2个字节,而utf-8占位3个字节,完整的示例代码:
1: 2: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3: <html> 4: <head> 5: <title> new document </title> 6: <meta name="generator" content="editplus" /> 7: <meta name="author" content="" /> 8: <meta name="keywords" content="" /> 9: <meta name="description" content="" /> 10: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 11: </head> 12: 13: <body> 14: <script type="text/javascript"> 15: function getRealLen(str, isUTF8) { 16: if (typeof str != 'string') { 17: return 0; 18: } 19: 20: if (!isUTF8) { 21: return str.replace(/[^x00-xFF]/g, 'xx').length; 22: } else { 23: var tempStr = str.replace(/[x00-xFF]/g, ''); 24: return (str.length - tempStr.length) + Math.floor(encodeURI(tempStr).length / 3); 25: } 26: } 27: 28: function uniLeft(str, isUTF8, len, suffix) { 29: var str = str.toString(); 30: var len = len * 1; 31: var suffix = suffix || ""; 32: 33: if (isNaN(len)) { 34: return str; 35: } 36: 37: var uniLen = getRealLen(str, isUTF8),tempStr = ''; 38: 39: if (uniLen <= len) { 40: return str.substr(0); 41: } 42: 43: for (var i = Math.floor(len / 2); i< uniLen; i++) { 44: tempStr = str.substr(0, i); 45: 46: if (getRealLen(tempStr, isUTF8) >= len || getRealLen(str.substr(0, i+1), isUTF8) > len) { 47: return tempStr; 48: } 49: } 50: } 51: 52: var str_1 = '朱元璋'; 53: var str_2 = 'hello朱元璋'; 54: 55: document.write( uniLeft(str_1, false, 3) + "<br/>");//gb2312 56: document.write( uniLeft(str_2, true, 13) );//utf-8 57: </script> 58: </body> 59: </html>
这里从len/2开始试着截取字符串,截取后调用getRealLen方法获取真实长度,判断是否超出限定的长度
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 使用kotlin实现MVP的方式(简单好用)
- Android Studio 3.6中新的视图绑定工具ViewBinding 用法详解
- android studio更新gradle错误构建项目失败的解决方法
- Android Studio使用Kotlin时,修改代码后运行不生效的解决方法
- 服务端开发人员必备网页调试工具:Postman
- 树莓派使用DHT11模块读取温湿度
- 用Go 写了个负载均衡器
- 给MacBook写一个更好的Windows触摸板驱动程序
- 小程序多图上传服务器接收返回数据操作
- WordPress屏蔽某个国家地方的IP访问
- Linux的php-fpm优化教程/php-fpm进程占用内存大和不释放内存问题
- 基于DNSmasq写了个WEB界面(开源)
- Android Studio3.6新特性之视图绑定ViewBinding使用指南
- Android recyclerView横条指示器实现淘宝菜单模块
- Android studio kotlin代码格式化操作