計算新浪Weibo消息長度

此文爲計算新浪Weibo的消息長度的方法. 就是 (發言請遵照社區公約,還能夠輸入119字).javascript

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
相關文章
相關標籤/搜索