计算新浪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 相关文章推荐
ajax更新数据后,jquery、jq失效问题
Mar 16 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
Apr 26 Javascript
js获取内联样式的方法
Jan 27 Javascript
jquery获得当前html页面源码的方法
Jul 14 Javascript
JavaScript函数中关于valueOf和toString的理解
Jun 14 Javascript
JavaScript字符集编码与解码详谈
Feb 02 Javascript
Vue学习笔记进阶篇之单元素过度
Jul 19 Javascript
详解利用 Express 托管静态文件的方法
Sep 18 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
Apr 25 Javascript
轻松学习JavaScript函数中的 Rest 参数
May 30 Javascript
layui-table获得当前行的上/下一行数据的例子
Sep 24 Javascript
JavaScript 事件捕获冒泡与捕获详情
Nov 11 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基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
php图片添加水印例子
2016/07/20 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
用javascript实现给出的盒子的序列是否可连为一矩型
2007/08/30 Javascript
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
关于Vue.nextTick()的正确使用方法浅析
2017/08/25 Javascript
Vue实现自定义下拉菜单功能
2018/07/16 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
2020/01/21 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
Python创建文件和追加文件内容实例
2014/10/21 Python
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
Django csrf 两种方法设置form的实例
2019/02/03 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
2020/06/01 Python
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
美国儿童服装、家具和玩具精品店:Maisonette
2019/11/24 全球购物
了解AppleTalk协议吗
2014/04/01 面试题
某公司C#程序员面试题笔试题
2014/05/26 面试题
差生评语大全
2014/05/04 职场文书
2014年小学教导处工作总结
2014/12/19 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js