资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

怎样得到下一个字母?

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

如果ID=2004,则nextID=2004a;  
  如果ID=2004a,则nextID=2004b;  
  如果ID=2004b,则nextID=2004c;  
  ……       ……  
  如果ID=2004z,则nextID=2004aa;  
  如果ID=2004aa,则nextID=2004ab;  
  ……         ……  
   
  已知ID,求nextID。  
   
  ID   和nextID都是字符串,有没有好的算法或函数之类的?  
   
  谢谢。  
   
   
 

网友回答:

发表者:rock29

Private   Function   NextID(ByVal   ID   As   String)   As   String  
      select   ID.length  
          case   4       如果是4位,肯定是2004  
              return   "2004a"  
          case   5     ‘如果是5位,肯定是2004+某一字符  
              if   ID.chars(4)="z"   then       ’如果是2004z,那么肯定返回2004aa  
                  return   "2004aa"  
              else     ‘如果是2004+某一字符,那么返回2004+某一字符+1  
                  return   "2004"+chr(ASC(ID.chars(4))+1)  
              end   if  
          case   6     ’如果是5位,肯定是2004+某两个字符  
              if   ID="2004zz"   then     ‘如果是2004zz,原样返回,当然你也可以返回别的或是作错误处理  
                  return   ID  
              else   if   ID.chars(5)="z"   then   ’如果是2004+某字符+z,返回2004++a  
                  return   "2004"+chr(ASC(ID.chars(4)+1)+"a")  
              else     ‘否则返回2004+某字符+  
                  return   "2004"+chr(ASC(ID.chars(4))+chr(ASC(ID.chars(5))+1)  
              End   if  
      End   select  
  End   Function      
  未调试!思路基本如此!

发表者:AntingZ

假设你的编码规则是前面是纯数字,后面是纯小写字母:  
   
          Public   Function   GetNextID(ByVal   strID   As   String)  
   
                  Dim   strNextID   As   String   返回值  
   
                  strID   =   strID.Trim()  
   
                  Dim   strDecimal   As   String         编码的数字部分  
                  Dim   strChars   As   String             编码的字符部分  
   
                  Dim   reg   As   System.Text.RegularExpressions.Regex  
                  strDecimal   =   reg.Replace(strID,   "[a-z]*",   "")  
                  strChars   =   reg.Replace(strID,   "\d*",   "")  
   
                  Dim   b()   As   Byte  
                  b   =   System.Text.Encoding.Default.GetBytes(strChars)  
                  Dim   i,   len   As   Int32  
                  len   =   b.Length  
                  b(len   -   1)   +=   1  
   
                  Dim   cFirst   =   ""   首位进位字符   (比如从"zz"   到   "aaa")  
   
                  For   i   =   len   -   1   To   0   Step   -1  
                          If   b(i)   >   Asc("z")   Then  
                                  需要进位  
                                  b(i)   =   Asc("a")  
                                  If   i   >   0   Then  
                                          b(i   -   1)   +=   1  
                                  Else  
                                          cFirst   =   "a"  
                                  End   If  
                          Else  
                                  不需要进位了  
                                  Exit   For  
                          End   If  
                  Next  
   
                  strNextID   =   strDecimal   &   cFirst   &   System.Text.Encoding.Default.GetString(b)  
   
                  Return   strNextID  
   
          End   Function  
   
   
 


 

 
热门推荐笔记本: IBM笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved