JS方法 - 字符串处理函数封装汇总 (更新中...)
一、计算一段字符串的字节长度
字符串的charCodeAt()方法,
可返回字符串固定位置的字符的Unicode编码,这个返回值是0-65535之间的整数,如果值<=255时为英文,反之为中文。
而,中文的字节长度为2,英文的字节长度为1。
依照这个规律封装如下:
1 function getStrBytes(str){
2 str = str.toString();
3 var strLen = 0;
4 for (let s = 0; s < str.length; s++) {
5 if(str.charCodeAt(s) >= 255){
6 // 中文,字节为2.
7 strLen += 2;
8 }else{
9 // 非中文,字节为1.
10 strLen += 1;
11 }
12 }
13 return strLen;
14 }
简化写法:(思路是,初始化时,默认就把字符串的长度等于字节长度。遇到中文的时候,字节长度+1)
1 function getStrBytes(str){
2 str = str.toString();
3 var strLen,
4 count;
5 strLen = count= str.length;
6 for (let s = 0; s < strLen; s++) {
7 if(str.charCodeAt(s) >= 255)
8 count ++;
9 }
10 return count;
11 }
调用方法:
getStrBytes("gjf32425");
二、计算输入文本框的字符个数
这个功能很常见,在评论区内一般会限制输入文字个数,
多用于textarea右下角的数字提示器功能,提示用户输入的文字个数。
利用上边计算出的字符串的字节,除以2取整就可以粗略当做用户的字符个数。
1 function getStrNum(str){
2 return Math.ceil(getStrBytes(str)/2);
3 }
调用:
getStrNum("继续努力加油!!耶!");
三、找出一段字符串中出现次数最多的那个字符
2018-10-23 18:45:46
思路:把字符串切割成数组进行遍历,这样就成了数组查重。
然后在数组遍历过程中,将每一项拷贝到一个对象中,
数组的每一项作为对象的key。key对应的初始键值为1(或者key对应的值都为数组)。
如果对象中已有这个key,则对应的val+1(或者val为数组时,直接将此字符当作值push到val中)
最后遍历对象,排查每个key,找出val值最大(为数组时找出数组长度最大)的对应key,就是我们要找的那个字符:
1 function getStrMax(str){
2 let array = str.split(""),
3 result = "",
4 count = 0
5 obj = {};
6 for (let i = 0; i < array.length; i++) {
7 if(!obj[array[i]]){
8 obj[array[i]] = 1;//如果当前对象中没有这个字符,则对应值初始为1
9 }else{
10 obj[array[i]] += 1;//如果有,则对应值加一次
11 }
12 }
13 for (const key in obj) {
14 if (obj[key] > count) {
15 result = key;
16 count = obj[key];
17 }
18 }
return result;
19 }
最后调用:
1 var str = "xing.org1^";
2 var maxStr = getStarMax(str);得到最终那个字符
越努力,越幸运;阿门。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?