zoukankan      html  css  js  c++  java
  • 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 }

    执行效果

  • 相关阅读:
    实现input输入时智能搜索
    动态磁盘转基本磁盘(简单卷变为主分区)
    删掉一个文件夹相对于另一个文件夹多出的文件
    win10搜索不到蓝牙设备
    anaconda使用
    pycharm tab换为4个空格
    wamp端口冲突
    c++ 字符串
    pta 编程题20 旅游规划
    c++指针二维数组
  • 原文地址:https://www.cnblogs.com/linxuanchen/p/2620820.html
Copyright © 2011-2022 走看看