从Twitter API文档( http://dev.twitter.com/pages/counting_characters ):
140个字符的tweet限制并不真正计算字符,而是字符串的字节数。
我如何才能使用Javascript计算字符串中的字节数,还是因为我将页面的编码设置为UTF-8,所以字符串中的每个字符都使用2个字节?
也许已经有一个很好的计数器函数可供我使用了?
发布于 2012-04-28 09:54:02
实际上,由于t.co url缩短器的存在,仅仅计算字符已经不再起作用。看看这两个Twitter参考资料,看看如何处理缩短的链接:
https://support.twitter.com/articles/78124-how-to-shorten-links-urls
https://dev.twitter.com/docs/tco-url-wrapper/how-twitter-wrap-urls
如果你正在寻找客户端的帮助,你必须通过twitter-text.js交一个新朋友
https://github.com/twitter/twitter-text-js
我还发布了一个函数的演练,该函数用于计算tweet中的剩余字符
http://blog.pay4tweet.com/2012/04/27/twitter-lifts-140-character-limit/
该函数如下所示
function charactersleft(tweet) {
var url, i, lenUrlArr;
var virtualTweet = tweet;
var filler = "01234567890123456789";
var extractedUrls = twttr.txt.extractUrlsWithIndices(tweet);
var remaining = 140;
lenUrlArr = extractedUrls.length;
if ( lenUrlArr > 0 ) {
for (var i = 0; i < lenUrlArr; i++) {
url = extractedUrls[i].url;
virtualTweet = virtualTweet.replace(url,filler);
}
}
remaining = remaining - virtualTweet.length;
return remaining;
}
该函数返回剩余的字符数,假设所有URL(包括那些缩短为少于20个字符的URL)都已被t.co“缩短”为19个字符加一个空格。
它假设包含了twitter-text.js。
发布于 2015-01-06 21:00:06
正如其他人提到的,twitter将链接计算为长度为20的字符串。在我们的小项目中,我们最终使用了以下代码片段:
function getTweetLength(input) {
var tmp = "";
for(var i = 0; i < 20; i++){tmp+="o"}
return input.replace(/(http[s]?:\/\/[\S]*)/g, tmp).length;
};
如果你正在使用angular.js,这里有一个可以在你的angular.js应用中使用的小过滤器:
app.filter('tweetLength', function() {
return function(input) {
var tmp = "";
for(var i = 0; i < 20; i++){tmp+="o"}
return input.replace(/(http[s]?:\/\/[\S]*)/g, tmp).length;
};
});
用法很简单,就像:
Tweet length is {{tweet|tweetLength}}
https://stackoverflow.com/questions/6245487
复制相似问题