计算新浪Weibo消息长度(还可以输入119字)


Posted in Javascript onJuly 02, 2013

此文为计算新浪Weibo的消息长度的方法. 就是 (发言请遵守社区公约,还可以输入119字).

var getMessageLength = (function() { 
var byteLength = function(b) { 
if(typeof b == "undefined") { 
return 0; 
} 
var a = b.match(/[^\x00-\x80]/g); 
return(b.length + (!a ? 0 : a.length)); 
}; 
return function(message) { 
message = message || ''; 
message = message.replace(/\r\n/g, "\n"); 
var c = 41, 
d = 140, 
e = 20, 
f = message, 
g = message.match(/http:\/\/[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+([-A-Z0-9a-z_\$\.\+\!\*\(\)\/,:;@&=\?\~\#\%]*)*/gi) || [], 
h = 0; for(var i = 0, j = g.length; i < j; i++) { 
var k = byteLength(g[i]); 
if(/^(http:\/\/t.cn)/.test(g[i])) { 
continue; 
} 
/^(http:\/\/)+(t.sina.com.cn|t.sina.cn)/.test(g[i]) || /^(http:\/\/)+(weibo.com|weibo.cn)/.test(g[i]) ? h += k <= c ? k : k <= d ? e : k - d + e : h += k <= d ? e : k - d + e; 
f = f.replace(g[i], ""); 
} 
var l = Math.ceil((h + byteLength(f)) / 2); 
return l; 
}; 
})();

getMessageLength('昨天电脑的硬盘坏了,我发邮件给美国国家安全局,他们竟然不肯把备份的内容发给我!'); //39
Javascript 相关文章推荐
删除重复数据的算法
Nov 23 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
Jun 07 Javascript
jquery获取tr并更改tr内容示例代码
Feb 13 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
Dec 07 Javascript
前端性能优化及技巧
May 06 Javascript
解读Bootstrap v4 sass设计
May 29 Javascript
JavaScript Promise 用法
Jun 14 Javascript
JavaScript队列的应用实例详解【经典数据结构】
Apr 12 Javascript
JS实现的JSON序列化操作简单示例
Jul 02 Javascript
Vue作用域插槽slot-scope实例代码
Sep 05 Javascript
Vue resource三种请求格式和万能测试地址
Sep 26 Javascript
用Golang运行JavaScript的实现示例
Nov 25 Javascript
jquery获取iframe中的dom对象(两种方法)
Jul 02 #Javascript
JS实现可改变列宽的table实例
Jul 02 #Javascript
js 图片随机不定向浮动的实现代码
Jul 02 #Javascript
js猜数字小游戏的简单实现代码
Jul 02 #Javascript
jQuery中获取Radio元素值的方法
Jul 02 #Javascript
js网页版计算器的简单实现
Jul 02 #Javascript
js实现广告漂浮效果的小例子
Jul 02 #Javascript
You might like
用PHP连接Oracle for NT 远程数据库
2006/10/09 PHP
杏林同学录(三)
2006/10/09 PHP
PHP 5.0对象模型深度探索之属性和方法
2008/03/27 PHP
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
php自动加载方式集合
2016/04/04 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
jstree的简单实例
2016/12/01 Javascript
JS触摸与手势事件详解
2017/05/09 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
JS 数组基本用法入门示例解析
2020/01/16 Javascript
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
pandas object格式转float64格式的方法
2018/04/10 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
python实现微信小程序自动回复
2018/09/10 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
css3媒体查询中device-width和width的区别详解
2020/03/27 HTML / CSS
史蒂夫·马登加拿大官网:Steve Madden加拿大
2017/11/18 全球购物
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
C#面试题问题集
2016/04/02 面试题
满月酒答谢词
2014/01/14 职场文书
班主任工作经验交流材料
2014/05/13 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
文明礼貌主题班会
2015/08/14 职场文书
利用Python+OpenCV三步去除水印
2021/05/28 Python
Nginx如何限制IP访问只允许特定域名访问
2022/07/23 Servers