zoukankan      html  css  js  c++  java
  • 一些数据方法的参考

    1.把金额数据从小写转换为大写
           namespace   HaiNuo  
          {  
              /*****************************************************************************************  
                *   类名:DecimalToUpper                                                                         *  
                *   功能:把金额数据从小写转换为大写                                                           *  
                *   限制条件:金额小于一万亿,且少于两位小数                                                *   
                *   用法:DecimalToUpper   x   =   new   DecimalToUpper();                          *  
                *               this.textBox2.Text   =   x.ToUpper(d);                                     *   
                *****************************************************************************************/   
              public   class   DecimalToUpper  
              {  
                      public   DecimalToUpper()  
                      {  
                              //  
                              //   TODO:   在此处添加构造函数逻辑  
                              //  
                      }  
       
                      ///   <summary>  
                      ///   小写金额转换为大写金额,其他条件:金额小于一万亿,最多两位小数  
                      ///   </summary>  
                      ///   <param   name="d">源金额,d   《   1000000000000.00(一万亿),且最多两位小数   </param>  
                      ///   <returns>结果,大写金额</returns>  
                      public   string   ToUpper(decimal   d)  
                      {  
                              if   (d   ==   0)  
                                      return   "零元整";  
       
                              string   je   =   d.ToString("####.00");  
                              if   (je.Length   >   15)  
                                      return   "";  
                              je   =   new   String('0',15   -   je.Length)   +   je; //若小于15位长,前面补0  
       
                              string   stry   =   je.Substring(0,4); //取得'亿'单元  
                              string   strw   =   je.Substring(4,4); //取得'万'单元  
                              string   strg   =   je.Substring(8,4); //取得'元'单元  
                              string   strf   =   je.Substring(13,2); //取得小数部分  
       
                              string   str1   =   "",str2   =   "",str3   =   "";  
       
                              str1   =   this.getupper(stry,"亿"); //亿单元的大写  
                              str2   =   this.getupper(strw,"万"); //万单元的大写  
                              str3   =   this.getupper(strg,"元"); //元单元的大写  
       
       
                              string   str_y   =   "",   str_w   =   "";  
                              if   (je[3]   ==   '0'   ||   je[4]   ==   '0') //亿和万之间是否有0  
                                      str_y   =   "零";  
                              if   (je[7]   ==   '0'   ||   je[8]   ==   '0') //万和元之间是否有0  
                                      str_w   =   "零";  
       
       
       
                              string   ret   =   str1   +   str_y   +   str2   +   str_w   +   str3; //亿,万,元的三个大写合并  
       
                              for   (int   i   =   0   ;i   <   ret.Length;i++) //去掉前面的"零"  
                              {  
                                      if   (ret[i]   !=   '零')  
                                      {  
                                              ret   =   ret.Substring(i);  
                                              break;  
                                      }  
       
                              }  
                              for   (int   i   =   ret.Length   -   1;i   >   -1   ;i--) //去掉最后的"零"  
                              {  
                                      if   (ret[i]   !=   '零')  
                                      {  
                                              ret   =   ret.Substring(0,i+1);  
                                              break;  
                                      }  
                              }  
       
                              if   (ret[ret.Length     -   1]   !=   '元') //若最后不位不是'元',则加一个'元'字  
                                      ret   =   ret   +   "元";  
       
                              if   (ret   ==   "零零元") //若为零元,则去掉"元数",结果只要小数部分  
                                      ret   =   "";  
       
                              if   (strf   ==   "00") //下面是小数部分的转换  
                              {  
                                      ret   =   ret   +   "整";  
                              }  
                              else  
                              {  
                                      string   tmp   =   "";  
                                      tmp   =   this.getint(strf[0]);  
                                      if   (tmp   ==   "零")  
                                              ret   =   ret   +   tmp;  
                                      else  
                                              ret   =   ret   +   tmp   +   "角";  
       
                                      tmp   =   this.getint(strf[1]);  
                                      if   (tmp   ==   "零")  
                                              ret   =   ret   +   "整";  
                                      else  
                                              ret   =   ret   +   tmp   +   "分";  
                              }  
       
                              if   (ret[0]   ==   '零')  
                              {  
                                      ret   =   ret.Substring(1); //防止0.03转为"零叁分",而直接转为"叁分"  
                              }  
       
                              return     ret; //完成,返回  
       
       
                      }  
                      ///   <summary>  
                      ///   把一个单元转为大写,如亿单元,万单元,个单元  
                      ///   </summary>  
                      ///   <param   name="str">这个单元的小写数字(4位长,若不足,则前面补零)</param>  
                      ///   <param   name="strDW">亿,万,元</param>  
                      ///   <returns>转换结果</returns>  
                      private   string   getupper(string   str,string   strDW)  
                      {  
                              if   (str   ==   "0000")  
                                      return   "";  
       
                              string   ret   =   "";  
                              string   tmp1   =   this.getint(str[0])   ;  
                              string   tmp2   =   this.getint(str[1])   ;  
                              string   tmp3   =   this.getint(str[2])   ;  
                              string   tmp4   =   this.getint(str[3])   ;  
                              if   (tmp1   !=   "零")  
                              {  
                                      ret   =   ret   +   tmp1   +   "仟";  
                              }  
                              else  
                              {  
                                      ret   =   ret   +   tmp1;  
                              }  
       
                              if   (tmp2   !=   "零")  
                              {  
                                      ret   =   ret   +   tmp2   +   "佰";  
                              }  
                              else  
                              {  
                                      if   (tmp1   !=   "零") //保证若有两个零'00',结果只有一个零,下同  
                                              ret   =   ret   +   tmp2;  
                              }  
       
                              if   (tmp3   !=   "零")  
                              {  
                                      ret   =   ret   +   tmp3   +   "拾";  
                              }  
                              else  
                              {  
                                      if   (tmp2   !=   "零")  
                                              ret   =   ret   +   tmp3;  
                              }  
       
                              if   (tmp4   !=   "零")  
                              {  
                                      ret   =   ret   +   tmp4   ;  
                              }  
       
                              if   (ret[0]   ==   '零') //若第一个字符是'零',则去掉  
                                      ret   =   ret.Substring(1);  
                              if   (ret[ret.Length   -   1]   ==   '零') //若最后一个字符是'零',则去掉  
                                      ret   =   ret.Substring(0,ret.Length   -   1);  
       
                              return   ret   +   strDW; //加上本单元的单位  
       
                      }  
                      ///   <summary>  
                      ///   单个数字转为大写  
                      ///   </summary>  
                      ///   <param   name="c">小写阿拉伯数字   0---9</param>  
                      ///   <returns>大写数字</returns>  
                      private   string   getint(char   c)  
                      {  
                              string   str   =   "";  
                              switch   (   c   )  
                              {  
                                      case   '0':  
                                              str   =   "零";  
                                              break;  
                                      case   '1':  
                                              str   =   "壹";  
                                              break;  
                                      case   '2':  
                                              str   =   "贰";  
                                              break;  
                                      case   '3':  
                                              str   =   "叁";  
                                              break;  
                                      case   '4':  
                                              str   =   "肆";  
                                              break;  
                                      case   '5':  
                                              str   =   "伍";  
                                              break;  
                                      case   '6':  
                                              str   =   "陆";  
                                              break;  
                                      case   '7':  
                                              str   =   "柒";  
                                              break;  
                                      case   '8':  
                                              str   =   "拐";  
                                              break;  
                                      case   '9':  
                                              str   =   "玖";  
                                              break;  
                              }  
                              return   str;  
                      }  
              }  
      }   
        

    2.如何將數字前面補0,補足設定的長度

        例如 將 123 前面補0,補到長度為6,可以透過 String.PadLeft 與 String.Format 的方式 

        //將數字前面補0,補足長度為6
        String snum = "123";
        String pnum = snum.PadLeft(6, '0');
        String fnum = String.Format("...{0:000000}",Convert.ToInt16(snum));
        MessageBox.Show( "原始字串 : " + snum + "\n 透過 PadLeft : " + pnum + "\n 透過 String.Format : " + fnum);

    3.生成编号

                  /// <summary>
                  /// 取得编号
                  /// 如GetNo("LZD25"),返回"LZD26"
                  /// </summary>
                  /// <param name="strIn">基础编号</param>
                  /// <returns></returns>
                  public static string GetNo(string strIn)
                  {
                        if (strIn == "" || strIn == null)
                        {
                              return "0001";
                        }

                        string chars = "";
                        string digites = "";

                        //字符串中末尾的数字序列起始位置,-1表示没有数字
                        int index=-1;

                        //获取字符串中末尾的数字序列起始位置
                        for (int i = 0; i < strIn.Length; i++)
                        {
                              if (Char.IsDigit(strIn[i]))
                              {
                                    index = i;
                                    digites += strIn[i].ToString();
                              }
                              else //非数字
                              {
                                    chars = strIn.Substring(0, i);
                                    index = -1;
                                    digites = "";
                              }
                        }

                        if (index == -1)
                        {
                              return strIn + "1";
                        }
                        else
                        {
                              return ""+chars + (Convert.ToInt32(digites) + 1);
                        }
                  }

        

  • 相关阅读:
    071 Simplify Path 简化路径
    070 Climbing Stairs
    069 Sqrt(x) 求平方根
    067 Add Binary 二进制求和
    bzoj3295: [Cqoi2011]动态逆序对
    bzoj1598: [Usaco2008 Mar]牛跑步
    bzoj1492: [NOI2007]货币兑换Cash
    bzoj2683(要改一点代码)&&bzoj1176: [Balkan2007]Mokia
    bzoj2190: [SDOI2008]仪仗队
    bzoj3262: 陌上花开
  • 原文地址:https://www.cnblogs.com/greatandforever/p/1514505.html
Copyright © 2011-2022 走看看