JS方法 - 字符串处理函数封装汇总 (更新中...)
一、计算一段字符串的字节长度
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);得到最终那个字符
JS方法 - 字符串处理函数封装汇总 (更新中...)的更多相关文章
- js 把字符串变成函数
js 把字符串变成函数 eval("(" + fieldEventss[1]+")");
- 网站开发进阶(二十二)HTML UI知识汇总(更新中...)
HTML知识汇总(更新中...) 1.<iframe> 标签 浏览器支持 所有浏览器都支持 <iframe> 标签. 定义和用法 iframe 元素会创建包含另外一个文档的内联 ...
- js中将字符串作为函数名来调用的方法
方法:eval() eg: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- js节流与防抖函数封装
js节流与防抖函数封装 常见应用场景: window的 resize 和 scroll 事件: 文字输入时的 keyup 事件: 元素拖拽.移动时的 mousemove 事件: 防抖 定义:多次触发事 ...
- html2canvas - 项目中遇到的那些坑点汇总(更新中...)
截图模糊 原理就是讲canvas画布的width和height放大两倍. 后来学习canvas的时候,才了解到这种写法不同于css的宽高设置, 因为css里的只是展示画布显示的大小,不像这样是c ...
- js学习笔记19----getElementsByClassName函数封装
js里面的getElementsByClassName()方法可通过某个class名获取到元素,在标准浏览器下可使用,在非标准浏览器下不可用.为了能够让这个方法兼容所有的浏览器,可以封装成如下函数: ...
- js 有关字符串的函数 以及一些和字符串有关的知识
JS自带函数 concat 将两个或多个字符的文本组合起来,返回一个新的字符串. var a = "hello"; var b = ",world"; var ...
- JS防抖与节流函数封装
防抖 在监听scroll事件的时候经常会用到防抖,当滚动到某一位置而触发状态,从而不会出现频繁滚动持续触发事件的情况 防抖的事件处理机制仅触发一次且必须是结束状态下才会执行 function debo ...
- Vue.js用法详解(一)更新中~
前 言 前段时间为了一个数据查询的项目自学了Vue,感觉这款框架还是很不错的,今天就整理整理这个框架如何使用,希望对正在学这个框架的小伙伴有所帮助~ 首先,我们先来了解一下Vue: Vue.js ...
随机推荐
- JavaBean递归拷贝工具类Dozer
JavaBean深度拷贝利器——Dozer DozerBeanMapper对象之间相同属性名赋值 DozerBeanMapper + 对象转Map方法 Dozer(JavaBean的映射工具)开发手册
- EF5+MVC4系列(5) 删除的方法 1:系统推荐的先查询后remove删除的方法 2:自己new一个包含主键的类,然后 attach附加 remove删除;3:使用db.Entry 修改状态删除4:EntityState的几种状态
我们还是以订单表为例 1:系统推荐的方法,先查询出来,然后调用remove方法进行删除 我们删除id大于等于4的 static void Main(string[] args) { Delet ...
- 谈谈Android中的Rect类——奇葩的思维
最近在工作中遇到了一些问题,总结下来就是Android中Rect这个类造成的.不得不说,不知道Android SDK的开发人员是怎么想的, 这个类设计的太奇葩了.首先介绍一下Rect类:Rect类主要 ...
- Thinkphp5笔记一:项目部署
系统:window 7 64位 Thinkphp版本:5.0.5 环境:wampserver集成 笔记分为两大部分,配置篇与数据库篇 一.虚拟主机部署/本地部署 在网站根目录下建立文件index.ph ...
- centos6.5 手动安装gcc
gcc版本:gcc-4.4.7 rpm -Uvh mpfr-2.4.1-6.el6.x86_64.rpm rpm -Uvh cpp-4.4.7-16.el6.x86_64.rpmrpm -Uvh ...
- redis 的set数据类型
相关命令 1.SADD SADD key-name item1 [item 2…] 将一个或多个成员元素加入到集合中 2.SREM SMEMBERS key-name item1 [item 2…] ...
- MVC學習網站
http://www.cnblogs.com/haogj/archive/2011/11/23/2246032.html
- Ubuntu中的“资源管理器”System Monitor
我们在Windows中经常要查看“资源管理器”来了解系统运行情况,对进程进行操作等等... 在Windows桌面任务栏右键“启动任务管理器”: 学习Linux,自然也希望有类似的“资源管理器”,安装完 ...
- 判断一个字符串同时出现几个字符的C#版本和JS版本
C#版本,参考:http://www.cnblogs.com/dudu/p/3841256.html JS版本是我群友写的: var str="abcdef"; var arr=[ ...
- 数据库事务MTDC出错解决办法
Communication with the underlying transaction manager has failed 与基础事务管理器的通信失败 排除步驟: 1.檢查MS DTC 設置.[ ...