计算新浪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 相关文章推荐
JQuery 实现的页面滚动时浮动窗口控件
Jul 10 Javascript
使用Js让Html中特殊字符不被转义
Nov 05 Javascript
jquery实现最简单的滑动菜单效果代码
Sep 12 Javascript
JavaScript字符串对象(string)基本用法示例
Jan 18 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
Mar 21 Javascript
AngularJS2中一种button切换效果的实现方法(二)
Mar 27 Javascript
Javascript实现的StopWatch功能示例
Jun 13 Javascript
javaScript实现复选框全选反选事件详解
Nov 20 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
Jan 08 Javascript
JS Web Flex弹性盒子模型代码实例
Mar 10 Javascript
处理JavaScript值为undefined的7个小技巧
Jul 28 Javascript
vue+Element-ui实现登录注册表单
Nov 17 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
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
PHP 类型转换函数intval
2009/06/20 PHP
PHP 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
在PHP中养成7个面向对象的好习惯
2010/01/28 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
php+Ajax处理xml与json格式数据的方法示例
2019/03/04 PHP
laravel 解决crontab不执行的问题
2019/10/22 PHP
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
JS实现网页滚动条感应鼠标变色的方法
2015/02/26 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
js实现文字滚动效果
2016/03/03 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
详解VUE 数组更新
2017/12/16 Javascript
Vue入门之数据绑定(小结)
2018/01/08 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
JS实现商品橱窗特效
2020/01/09 Javascript
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
跟老齐学Python之用while来循环
2014/10/02 Python
python验证码识别的示例代码
2017/09/21 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
Python os.rename() 重命名目录和文件的示例
2018/10/25 Python
python远程连接MySQL数据库
2019/04/19 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
python 实现list或string按指定分段
2019/12/25 Python
伦敦一家非常流行的时尚精品店:Oxygen Boutique
2017/01/15 全球购物
家长会主持词
2014/03/26 职场文书
团代会主持词
2014/04/02 职场文书
创文明城市标语
2014/06/16 职场文书
自动化专业大学生职业生涯规划范文:爱拚才会赢
2014/09/12 职场文书
毕业生见习报告总结
2014/11/08 职场文书
先进典型发言材料
2014/12/30 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android