C#實現與新浪微博相同演算法的字數統計函數,要的拿走。

來源:互聯網
上載者:User

微博剩餘字數統計新浪官方演算法的C#實現,要的朋友請儲存。

參數text是本文內容。

isOutOfRange用來判斷文字是否溢出,以此來控制發送按鈕的可用狀態。

 1 public static string GetContentLengthString(string text, out bool isOutOfRange) 2 { 3     text = text.Trim(); 4     text = Regex.Replace(text, "\r\n", "\n"); 5     int textLength = 0; 6     if (text.Length > 0) 7     { 8         int min = 41, max = 140, urlLen = 20; 9         var n = text;10         var r = Regex.Matches(text, @"http://[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+([-A-Z0-9a-z_$.+!*()/\\\,:;@&=?~#%]*)*");11         var total = 0;12         for (int m = 0, p = r.Count; m < p; m++)13         {14             var url = r[m].Value;15             var byteLen = url.Length + Regex.Matches(url, @"[^\x00-\x80]").Count;16             if (Regex.IsMatch(url, @"^(http://t.cn)"))17             {18                 continue;19             }20             else if (Regex.IsMatch(url, @"^(http:\/\/)+(weibo.com|weibo.cn)"))21             {22                 total += byteLen <= min ? byteLen : (byteLen <= max ? urlLen : (byteLen - max + urlLen));23             }24             else25             {26                 total += byteLen <= max ? urlLen : (byteLen - max + urlLen);27             }28             n = n.Replace(url, "");29         }30         textLength = (int)Math.Ceiling((total + n.Length + Regex.Matches(n, @"[^\x00-\x80]").Count) / 2.00d);31     }32 33     int textRemainLength = 140 - textLength;34     string template = string.Empty;35     if (textRemainLength >= 0)36     {37         template = "還可以輸入{0:N0}個字";38         isOutOfRange = false;39     }40     else41     {42         template = "已經超過了{0:N0}個字";43 44         isOutOfRange = true;45     }46     return string.Format(template, Math.Abs(textRemainLength));47 }

執行效果

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.