• C#根据规则生成6位随机码


      1     #region 获得6位优惠码 zhy
      2     public static string CreatePromoCode(string code)
      3     {
      4         if (code == "")
      5         {
      6             return "a00001";
      7         }
      8         else
      9         {
     10             string new_code = "";
     11             new_code = CreateGrapheme(code);
     12             new_code += CreateNumber(code);
     13             return new_code;
     14         }
     15     }
     16     #endregion
     17 
     18     #region 拼接字母 zhy
     19     public static string CreateGrapheme(string code)
     20     {
     21         string new_code = "";
     22         //获取字母
     23         string grapheme = GetGrapheme(code);
     24         //获得数字
     25         string num = GetNumber(code);
     26         //最后一个字母为z从新拼接否则获取该字母下一个字母拼接
     27         if (grapheme.Substring(grapheme.Length - 1) == "Z")
     28         {
     29             switch (grapheme.Length)
     30             {
     31                 case 1:
     32                     if (Convert.ToInt32(num) >= 99999)
     33                     {
     34                         new_code = "AA";
     35                     }
     36                     else
     37                     {
     38                         new_code += grapheme;
     39                     }
     40                     break;
     41                 case 2:
     42                     if (Convert.ToInt32(num) >= 9999)
     43                     {
     44                         new_code = "AAA";
     45                     }
     46                     else
     47                     {
     48                         new_code += grapheme;
     49                     }
     50                     break;
     51                 case 3:
     52                     if (Convert.ToInt32(num) >= 999)
     53                     {
     54                         new_code = "AAAA";
     55                     }
     56                     else
     57                     {
     58                         new_code += grapheme;
     59                     }
     60                     break;
     61                 case 4:
     62                     if (Convert.ToInt32(num) >= 99)
     63                     {
     64                         new_code = "AAAAA";
     65                     }
     66                     else
     67                     {
     68                         new_code += grapheme;
     69                     }
     70                     break;
     71             }
     72         }
     73         else
     74         {
     75             switch (grapheme.Length)
     76             {
     77                 case 1:
     78                     if (Convert.ToInt32(num) >= 99999)
     79                     {
     80                         char new_grapheme = Convert.ToChar(Convert.ToInt16(grapheme.Substring(new_code.Length - 1).ToCharArray()[0]) + 1);
     81                         new_code += grapheme.Substring(0, new_code.Length - 1) + new_grapheme.ToString();
     82                         num = "00000";
     83                     }
     84                     else
     85                     {
     86                         new_code += grapheme;
     87                     }
     88                     break;
     89                 case 2:
     90                     if (Convert.ToInt32(num) >= 9999)
     91                     {
     92                         char new_grapheme = Convert.ToChar(Convert.ToInt16(grapheme.Substring(new_code.Length - 1).ToCharArray()[0]) + 1);
     93                         new_code += grapheme.Substring(0, new_code.Length - 1) + new_grapheme.ToString();
     94                         num = "0000";
     95                     }
     96                     else
     97                     {
     98                         new_code += grapheme;
     99                     }
    100                     break;
    101                 case 3:
    102                     if (Convert.ToInt32(num) >= 999)
    103                     {
    104                         char new_grapheme = Convert.ToChar(Convert.ToInt16(grapheme.Substring(new_code.Length - 1).ToCharArray()[0]) + 1);
    105                         new_code += grapheme.Substring(0, new_code.Length - 1) + new_grapheme.ToString();
    106                         num = "000";
    107                     }
    108                     else
    109                     {
    110                         new_code += grapheme;
    111                     }
    112                     break;
    113                 case 4:
    114                     if (Convert.ToInt32(num) >= 99)
    115                     {
    116                         char new_grapheme = Convert.ToChar(Convert.ToInt16(grapheme.Substring(new_code.Length - 1).ToCharArray()[0]) + 1);
    117                         new_code += grapheme.Substring(0, new_code.Length - 1) + new_grapheme.ToString();
    118                         num = "00";
    119                     }
    120                     else
    121                     {
    122                         new_code += grapheme;
    123                     }
    124                     break;
    125                 case 5:
    126                     if (Convert.ToInt32(num) >= 9)
    127                     {
    128                         char new_grapheme = Convert.ToChar(Convert.ToInt16(grapheme.Substring(new_code.Length - 1).ToCharArray()[0]) + 1);
    129                         new_code += grapheme.Substring(0, new_code.Length - 1) + new_grapheme.ToString();
    130                         num = "0";
    131                     }
    132                     else
    133                     {
    134                         new_code += grapheme;
    135                     }
    136                     break;
    137             }
    138         }
    139         return new_code;
    140     }
    141     #endregion
    142 
    143     #region 获得字母 zhy
    144     public static string GetGrapheme(string code)
    145     {
    146         //定义获取字母的正则
    147         Regex grapheme_regex = new Regex(@"[A-Z]+");
    148         //找到字符串中的匹配项
    149         Match grapheme_match = grapheme_regex.Match(code);
    150         return grapheme_match.Value;
    151     }
    152     #endregion
    153 
    154     #region 获得数字 zhy
    155     public static string GetNumber(string code)
    156     {
    157         //定义获取数字的正则
    158         Regex num_regex = new Regex(@"[^d.d]");
    159         //剔除字符串中除数字以外的字符
    160         string num = Regex.Replace(code, @"[^d.d]", "").ToString();
    161         return num;
    162     }
    163     #endregion
    164 
    165     #region 拼接数字 zhy
    166     public static string CreateNumber(string code)
    167     {
    168         string new_code = "";
    169         //获取字母
    170         string grapheme = GetGrapheme(code);
    171         //获得数字
    172         string num = GetNumber(code);
    173 
    174         int old_num = Convert.ToInt32(num);
    175         //计算字母后的数字
    176         switch (num.ToString().Length)
    177         {
    178             case 1:
    179                 if (old_num < 9)
    180                 {
    181                     new_code = new_code + (old_num++);
    182                 }
    183                 else
    184                 {
    185                     //优惠码已经配到头
    186                     new_code = "";
    187                 }
    188                 break;
    189             case 2:
    190                 if (old_num < 99)
    191                 {
    192                     int temporary_num = old_num;
    193                     temporary_num++;
    194                     //判断数字是否从01开始
    195                     if (temporary_num.ToString().Length == 1)
    196                     {
    197                         new_code = new_code + "0" + temporary_num.ToString();
    198                     }
    199                     else
    200                     {
    201                         new_code = new_code + temporary_num.ToString();
    202                     }
    203                 }
    204                 else
    205                 {
    206                     //优惠码已经配到头
    207                     new_code = new_code + "0";
    208                 }
    209                 break;
    210             case 3:
    211                 if (old_num < 999)
    212                 {
    213                     int temporary_num = old_num;
    214                     temporary_num++;
    215                     //判断数字是否从01开始
    216                     if (temporary_num.ToString().Length == 1)
    217                     {
    218                         new_code = new_code + "00" + temporary_num.ToString();
    219                     }
    220                     else if (temporary_num.ToString().Length == 2)
    221                     {
    222                         new_code = new_code + "0" + temporary_num.ToString();
    223                     }
    224                     else
    225                     {
    226                         new_code = new_code + temporary_num.ToString();
    227                     }
    228                 }
    229                 else
    230                 {
    231                     //优惠码已经配到头
    232                     new_code = "01";
    233                 }
    234                 break;
    235             case 4:
    236                 if (old_num < 9999)
    237                 {
    238                     int temporary_num = old_num;
    239                     temporary_num++;
    240                     //判断数字是否从01开始
    241                     if (temporary_num.ToString().Length == 1)
    242                     {
    243                         new_code = new_code + "000" + temporary_num.ToString();
    244                     }
    245                     else if (temporary_num.ToString().Length == 2)
    246                     {
    247                         new_code = new_code + "00" + temporary_num.ToString();
    248                     }
    249                     else if (temporary_num.ToString().Length == 3)
    250                     {
    251                         new_code = new_code + "0" + temporary_num.ToString();
    252                     }
    253                     else
    254                     {
    255                         new_code = new_code + temporary_num.ToString();
    256                     }
    257                 }
    258                 else
    259                 {
    260                     //优惠码已经配到头
    261                     new_code = "001";
    262                 }
    263                 break;
    264             case 5:
    265                 if (old_num < 99999)
    266                 {
    267                     int temporary_num = old_num;
    268                     temporary_num++;
    269                     //判断数字是否从01开始
    270                     if (temporary_num.ToString().Length == 1)
    271                     {
    272                         new_code = new_code + "0000" + temporary_num.ToString();
    273                     }
    274                     else if (temporary_num.ToString().Length == 2)
    275                     {
    276                         new_code = new_code + "000" + temporary_num.ToString();
    277                     }
    278                     else if (temporary_num.ToString().Length == 3)
    279                     {
    280                         new_code = new_code + "00" + temporary_num.ToString();
    281                     }
    282                     else if (temporary_num.ToString().Length == 4)
    283                     {
    284                         new_code = new_code + "0" + temporary_num.ToString();
    285                     }
    286                     else
    287                     {
    288                         new_code = new_code + temporary_num.ToString();
    289                     }
    290                 }
    291                 else
    292                 {
    293                     //优惠码已经配到头
    294                     new_code = "0001";
    295                 }
    296                 break;
    297         }
    298         return new_code;
    299     }
    300     #endregion
  • 相关阅读:
    shell 默认变量
    diff 实现
    AWK变量
    docker-bridge network
    docker--linux network namespace
    docker-container 操作
    docker--shell和Exec格式
    docker--build自己的image
    docker--container
    docker--删除container和image
  • 原文地址:https://www.cnblogs.com/zhhying/p/4281820.html
Copyright © 2020-2023  润新知