计算Javascript中字符数的最佳方法

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (36)

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

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

我如何能够使用Javascript计算字符串中的字节数,或者我的字符串中的每个字符总是使用2个字节,因为我将页面的编码设置为UTF-8?

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

提问于
用户回答回答于

为什么不只是数字?

“咖啡厅”是5或6 UTF-8字节,但它只能被计为4个字符。

"café".length == 4

只需使用 String.length <= 140

用户回答回答于

事实上,由于t.co网址缩短,只是数字不再适用。查看这两个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

我还发布了一个用于计算推文中剩余字符的函数的演练

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。

扫码关注云+社区