• C#实现与新浪微博相同算法的字数统计函数,要的拿走。


    微博剩余字数统计新浪官方算法的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             else
    25             {
    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     else
    41     {
    42         template = "已经超过了{0:N0}个字";
    43 
    44         isOutOfRange = true;
    45     }
    46     return string.Format(template, Math.Abs(textRemainLength));
    47 }

    执行效果

  • 相关阅读:
    【CTF杂项】常见文件文件头文件尾格式总结及各类文件头
    修复XSS跨站漏洞
    XSS高级利用
    i春秋-百度杯十月场-EXEC
    i春秋-百度杯十月场-vld
    i春秋-百度杯十月场-fuzzing
    阿里云轻量应用服务器debian8.9用apache多端口搭建多站点
    Hdu 1873 看病要排队
    Hdu 1870 愚人节的礼物
    Hdu 1864 最大报销额
  • 原文地址:https://www.cnblogs.com/linxuanchen/p/2620820.html
Copyright © 2020-2023  润新知