JS方法 - 字符串处理函数封装汇总 (更新中...)

一、计算一段字符串的字节长度

字符串的charCodeAt()方法,
可返回字符串固定位置的字符的Unicode编码,这个返回值是0-65535之间的整数,如果值<=255时为英文,反之为中文。
而,中文的字节长度为2,英文的字节长度为1。
依照这个规律封装如下:
 function getStrBytes(str){
str = str.toString();
var strLen = 0;
for (let s = 0; s < str.length; s++) {
if(str.charCodeAt(s) >= 255){
// 中文,字节为2.
strLen += 2;
}else{
// 非中文,字节为1.
strLen += 1;
}
}
return strLen;
}

简化写法:(思路是,初始化时,默认就把字符串的长度等于字节长度。遇到中文的时候,字节长度+1)

 function getStrBytes(str){
str = str.toString();
var strLen,
count;
strLen = count= str.length;
for (let s = 0; s < strLen; s++) {
if(str.charCodeAt(s) >= 255)
count ++;
}
return count;
}

调用方法:

getStrBytes("gjf32425");

二、计算输入文本框的字符个数

这个功能很常见,在评论区内一般会限制输入文字个数,

多用于textarea右下角的数字提示器功能,提示用户输入的文字个数。

利用上边计算出的字符串的字节,除以2取整就可以粗略当做用户的字符个数。

 function getStrNum(str){
return Math.ceil(getStrBytes(str)/2);
}

调用:

getStrNum("继续努力加油!!耶!");

三、找出一段字符串中出现次数最多的那个字符

2018-10-23 18:45:46

思路:把字符串切割成数组进行遍历,这样就成了数组查重。

然后在数组遍历过程中,将每一项拷贝到一个对象中,

数组的每一项作为对象的key。key对应的初始键值为1(或者key对应的值都为数组)。

如果对象中已有这个key,则对应的val+1(或者val为数组时,直接将此字符当作值push到val中)

最后遍历对象,排查每个key,找出val值最大(为数组时找出数组长度最大)的对应key,就是我们要找的那个字符:

     function getStrMax(str){
let array = str.split(""),
result = "",
count = 0
obj = {};
for (let i = 0; i < array.length; i++) {
if(!obj[array[i]]){
obj[array[i]] = 1;//如果当前对象中没有这个字符,则对应值初始为1
}else{
obj[array[i]] += 1;//如果有,则对应值加一次
}
}
for (const key in obj) {
if (obj[key] > count) {
result = key;
count = obj[key];
}
}
    return result;
}

最后调用:

 var str = "xing.org1^";
var maxStr = getStarMax(str);得到最终那个字符
上一篇:html2canvas - 项目中遇到的那些坑点汇总(更新中...)


下一篇:面向对象程序设计 第二次作业<1>