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 ...
随机推荐
- (转)FFMPEG的一些使用技巧
1.查看FFMPEG的日志信息 在vc中使用ffmpeg静态库做二次开发的时候,如果不是控制台应用程序,又需要查看ffmpeg的日志信息,可使用 av_log_set_callback 函数注册一个回 ...
- 轻量实用的PHP分页组件:Paginator
来源:https://www.helloweba.com/view-blog-453.html demo:https://www.helloweba.com/demo/2017/Paginator/
- Thinkphp5笔记五:配置data文件夹
如果你看项目下的各种文件,有种乱七八糟的感觉的话,你就可以进行以下配置. 配置data文件夹的,整理各种文件,让看起来舒服些. 一.设置runtime文件夹 index.php define('RUN ...
- UNIX环境编程学习笔记(28)——多线程编程(三):线程的取消
lienhua342014-11-24 1 取消线程 pthread 提供了pthread_cancel 函数用于请求取消同一进程中的其他线程. #include <pthread.h> ...
- 源码分析三(Vector与ArrayList的区别)
前面讨论过ArrayList与LinkedList的区别,ArrayList的底层数据结构是数组Object[],而LinkedList底层维护 的是一个链表Entry,所以对于查询,肯定是Array ...
- 利用opencv作透明重叠人群密度热度图
在作热度图的时候我们经常需要将热度图调整透明度后叠加在原图上达到更好的展示效果.比如检测人气密度的热度图: (来自sensetime) 一般作图的时候会第一时间想到matplotlib,因为可以很方便 ...
- Thinkphp 模板中使用自定义函数的方法
1.number_format {$number|number_format=2} 千分位,保留两位小数 2.round {$number|round=2} 四舍五入保留两位小数
- linq to xml 增删查改
一.XML基本概述 XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境 ...
- SpringMVC由浅入深day01_9商品修改功能开发
9 商品修改功能开发 9.1 需求 操作流程: 1.进入商品查询列表页面 2.点击修改,进入商品修改页面,页面中显示了要修改的商品(从数据库查询) 要修改的商品从数据库查询,根据商品id(主键)查询商 ...
- iOS App Extensions
一.扩展概述 扩展(Extension)是iOS 8中引入的一个非常重要的新特性.扩展让app之间的数据交互成为可能.用户可以在app中使用其他应用提供的功能,而无需离开当前的应用. 在iOS 8系统 ...