首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Javascript中计算推文字符数的最佳方法

在Javascript中计算推文字符数的最佳方法
EN

Stack Overflow用户
提问于 2011-06-06 03:59:01
回答 2查看 11.9K关注 0票数 17

从Twitter API文档( http://dev.twitter.com/pages/counting_characters ):

140个字符的tweet限制并不真正计算字符,而是字符串的字节数。

我如何才能使用Javascript计算字符串中的字节数,还是因为我将页面的编码设置为UTF-8,所以字符串中的每个字符都使用2个字节?

也许已经有一个很好的计数器函数可供我使用了?

EN

回答 2

Stack Overflow用户

发布于 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。

票数 21
EN

Stack Overflow用户

发布于 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}}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6245487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档