`
yxgyh
  • 浏览: 268702 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

java常用函数收集(二)

    博客分类:
  • JAVA
阅读更多
  1. /**  
  2.      * 人民币转成大写  
  3.      *   
  4.      * @param value  
  5.      * @return String  
  6.      */  
  7.     public static String hangeToBig(double value)   
  8.     {   
  9.         char[] hunit = { '拾''佰''仟' }; // 段内位置表示   
  10.         char[] vunit = { '万''亿' }; // 段名表示   
  11.         char[] digit = { '零''壹''贰''叁''肆''伍''陆''柒''捌''玖' }; // 数字表示   
  12.         long midVal = (long) (value * 100); // 转化成整形   
  13.         String valStr = String.valueOf(midVal); // 转化成字符串   
  14.   
  15.         String head = valStr.substring(0, valStr.length() - 2); // 取整数部分   
  16.         String rail = valStr.substring(valStr.length() - 2); // 取小数部分   
  17.   
  18.         String prefix = ""// 整数部分转化的结果   
  19.         String suffix = ""// 小数部分转化的结果   
  20.         // 处理小数点后面的数   
  21.         if (rail.equals("00"))   
  22.         { // 如果小数部分为0   
  23.             suffix = "整";   
  24.         }   
  25.         else  
  26.         {   
  27.             suffix = digit[rail.charAt(0) - '0'] + "角" + digit[rail.charAt(1) - '0'] + "分"// 否则把角分转化出来   
  28.         }   
  29.         // 处理小数点前面的数   
  30.         char[] chDig = head.toCharArray(); // 把整数部分转化成字符数组   
  31.         char zero = '0'// 标志'0'表示出现过0   
  32.         byte zeroSerNum = 0// 连续出现0的次数   
  33.         for (int i = 0; i < chDig.length; i++)   
  34.         { // 循环处理每个数字   
  35.             int idx = (chDig.length - i - 1) % 4// 取段内位置   
  36.             int vidx = (chDig.length - i - 1) / 4// 取段位置   
  37.             if (chDig[i] == '0')   
  38.             { // 如果当前字符是0   
  39.                 zeroSerNum++; // 连续0次数递增   
  40.                 if (zero == '0')   
  41.                 { // 标志   
  42.                     zero = digit[0];   
  43.                 }   
  44.                 else if (idx == 0 && vidx > 0 && zeroSerNum < 4)   
  45.                 {   
  46.                     prefix += vunit[vidx - 1];   
  47.                     zero = '0';   
  48.                 }   
  49.                 continue;   
  50.             }   
  51.             zeroSerNum = 0// 连续0次数清零   
  52.             if (zero != '0')   
  53.             { // 如果标志不为0,则加上,例如万,亿什么的   
  54.                 prefix += zero;   
  55.                 zero = '0';   
  56.             }   
  57.             prefix += digit[chDig[i] - '0']; // 转化该数字表示   
  58.             if (idx > 0)   
  59.                 prefix += hunit[idx - 1];   
  60.             if (idx == 0 && vidx > 0)   
  61.             {   
  62.                 prefix += vunit[vidx - 1]; // 段结束位置应该加上段名如万,亿   
  63.             }   
  64.         }   
  65.   
  66.         if (prefix.length() > 0)   
  67.             prefix += '圆'// 如果整数部分存在,则有圆的字样   
  68.         return prefix + suffix; // 返回正确表示   
  69.     }   
  70. /**  
  71.      * 全角字符转半角字符  
  72.      *   
  73.      * @param QJStr  
  74.      * @return String  
  75.      */  
  76.     public static final String QJToBJChange(String QJStr)   
  77.     {   
  78.         char[] chr = QJStr.toCharArray();   
  79.         String str = "";   
  80.         for (int i = 0; i < chr.length; i++)   
  81.         {   
  82.             chr[i] = (char) ((int) chr[i] - 65248);   
  83.             str += chr[i];   
  84.         }   
  85.         return str;   
  86.     }   
  87. /**  
  88.      * 去掉字符串中重复的子字符串  
  89.      *   
  90.      * @param str  
  91.      * @return String  
  92.      */  
  93.     private static String removeSameString(String str)   
  94.     {   
  95.         Set<String> mLinkedSet = new LinkedHashSet<String>();   
  96.         String[] strArray = str.split(" ");   
  97.         StringBuffer sb = new StringBuffer();   
  98.   
  99.         for (int i = 0; i < strArray.length; i++)   
  100.         {   
  101.             if (!mLinkedSet.contains(strArray[i]))   
  102.             {   
  103.                 mLinkedSet.add(strArray[i]);   
  104.                 sb.append(strArray[i] + " ");   
  105.             }   
  106.         }   
  107.         System.out.println(mLinkedSet);   
  108.         return sb.toString().substring(0, sb.toString().length() - 1);   
  109.     }   
  110. /**     
  111.      * 根据指定方法的参数去构造一个新的对象的拷贝并将他返回  
  112.      * @param obj 原始对象  
  113.      * @return 新对象  
  114.      * @throws NoSuchMethodException      
  115.      * @throws InvocationTargetException      
  116.      * @throws IllegalAccessException      
  117.      * @throws InstantiationException      
  118.      * @throws SecurityException      
  119.      * @throws IllegalArgumentException      
  120.      */  
  121.     @SuppressWarnings("unchecked")   
  122.     public static Object copy(Object obj) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException,   
  123.                     InvocationTargetException, NoSuchMethodException   
  124.     {   
  125.         //获得对象的类型       
  126.         Class classType = obj.getClass();   
  127.   
  128.         //通过默认构造方法去创建一个新的对象,getConstructor的视其参数决定调用哪个构造方法       
  129.         Object objectCopy = classType.getConstructor(new Class[]{}).newInstance(new Object[]{});   
  130.   
  131.         //获得对象的所有属性       
  132.         Field[] fields = classType.getDeclaredFields();   
  133.   
  134.         for(int i = 0; i < fields.length; i++)   
  135.         {   
  136.             //获取数组中对应的属性       
  137.             Field field = fields[i];   
  138.   
  139.             String fieldName = field.getName();   
  140.             String stringLetter = fieldName.substring(01).toUpperCase();   
  141.   
  142.             //获得相应属性的getXXX和setXXX方法名称       
  143.             String getName = "get" + stringLetter + fieldName.substring(1);   
  144.             String setName = "set" + stringLetter + fieldName.substring(1);   
  145.   
  146.             //获取相应的方法       
  147.             Method getMethod = classType.getMethod(getName, new Class[]{});   
  148.             Method setMethod = classType.getMethod(setName, new Class[]{field.getType()});   
  149.   
  150.             //调用源对象的getXXX()方法       
  151.             Object value = getMethod.invoke(obj, new Object[]{});   
  152.   
  153.             //调用拷贝对象的setXXX()方法       
  154.             setMethod.invoke(objectCopy, new Object[]{value});   
  155.         }   
  156.   
  157.         return objectCopy;   
  158.     }   
  159.   
  160. //过滤特殊字符   
  161. public static String encoding(String src){   
  162.         if (src==null)   
  163.             return "";   
  164.         StringBuilder result=new StringBuilder();   
  165.         if (src!=null){   
  166.             src=src.trim();   
  167.             for (int pos=0;pos<src.length();pos++){   
  168.                 switch(src.charAt(pos)){   
  169.                     case '\"':result.append(""");break;   
  170.                     case '<':result.append("<");break;   
  171.                     case '>':result.append(">");break;   
  172.                     case '\'':result.append("&apos;");break;   
  173.                     case '&':result.append("&");break;   
  174.                     case '%':result.append("&pc;");break;   
  175.                     case '_':result.append("&ul;");break;   
  176.                     case '#':result.append("&shap;");break;   
  177.                     case '?':result.append("&ques;");break;   
  178.                     default:result.append(src.charAt(pos));break;   
  179.                 }   
  180.             }   
  181.         }   
  182.         return result.toString();   
  183.     }   
  184. //反过滤特殊字符   
  185.     public static String decoding(String src){   
  186.         if (src==null)   
  187.             return "";   
  188.         String result=src;   
  189.         result=result.replace(""", "\"").replace("&apos;""\'");   
  190.         result=result.replace("<""<").replace(">"">");   
  191.         result=result.replace("&""&");   
  192.         result=result.replace("&pc;""%").replace("&ul""_");   
  193.         result=result.replace("&shap;""#").replace("&ques""?");   
  194.         return result;   
  195.     }   
  196. // toUtf8String将文件名转成GBK后再附到ContentDisposition   
  197. public static String toUtf8String(String s) {   
  198.     StringBuffer sb = new StringBuffer();   
  199.     for (int i = 0; i < s.length(); i++) {   
  200.         char c = s.charAt(i);   
  201.         if (c >= 0 && c <= 255) {   
  202.             sb.append(c);   
  203.         } else {   
  204.             byte[] b;   
  205.             try {   
  206.                 b = Character.toString(c).getBytes("utf-8");   
  207.             } catch (Exception ex) {   
  208.                 System.out.println(ex);   
  209.                 b = new byte[0];   
  210.             }   
  211.             for (int j = 0; j < b.length; j++) {   
  212.                 int k = b[j];   
  213.                 if (k < 0)   
  214.                     k += 256;   
  215.                 sb.append("%" + Integer.toHexString(k).toUpperCase());   
  216.             }   
  217.         }   
  218.     }   
  219.     return sb.toString();   
  220. }   
  221. /**  
  222.      * 对字节流进行GBK解码  
  223.      *   
  224.      * @param byteBuffer  
  225.      * @return  
  226.      */  
  227.     public static String decode(ByteBuffer byteBuffer) {   
  228.         Charset charset = Charset.forName("ISO-8859-1");   
  229.         CharsetDecoder decoder = charset.newDecoder();   
  230.         try {   
  231.             CharBuffer charBuffer = decoder.decode(byteBuffer);   
  232.             return new String(charBuffer.toString().getBytes("ISO8859_1"),   
  233.                     "GBK").trim();   
  234.         } catch (Exception e) {   
  235.             return null;   
  236.         }   
  237.     }   
  238. //实现百分比   
  239. public String myPercent(int y, int z) {   
  240.         String baifenbi = "";// 接受百分比的值   
  241.         double baiy = y * 1.0;   
  242.         double baiz = z * 1.0;   
  243.         double fen = baiy / baiz;   
  244.         // NumberFormat nf = NumberFormat.getPercentInstance(); 注释掉的也是一种方法   
  245.         // nf.setMinimumFractionDigits( 2 ); 保留到小数点后几位   
  246.         DecimalFormat df1 = new DecimalFormat("##.00%"); // ##.00%   
  247.                                                             // 百分比格式,后面不足2位的用0补齐   
  248.         // baifenbi=nf.format(fen);   
  249.         baifenbi = df1.format(fen);   
  250.         return baifenbi;   
  251.     }   
分享到:
评论

相关推荐

    Java常用函数大全

    首先声明函数基本都是别人写的。收集来根据功能分为了几个共同类方便学习使用。包括File, DB, Date, String等。比如文件目录拷贝,日期变换等等吧。还可以吧。

    JAVA上百实例源码以及开源项目源代码

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    JAVA上百实例源码以及开源项目

    笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...

    java开源包11

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包6

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包4

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包9

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包101

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包5

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包8

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包10

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java资料(自己收集的大合集,自学必备)

    java资料(自己收集的大合集,自学必备) 1.java21个自学例子必备资料,附程序源码。 2.Java网络编程学习资料,包含4本chm的资料。 3.java实例相关资料,包含最常用的一些函数、以及用例。

    java开源包3

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包1

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    张孝祥Java就业培训教程.pdf

    在以后的章节中,用通俗易懂的手法,紧密联系实际应用的方式,深入浅出地讲解了多线程,常用Java类,Java中的I/O(输入输出)编程,GUI与Applet,网络编程等方面的知识。 本书许多内容都来源于程序员圈子里的非正式...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《java jdk 7学习笔记》适合java的初中级读者,以及广大java应用开发人员。 作译者 林信良(网名:良葛格) 学历:台湾大学电机工程学系 经历:台湾升阳教育训练技术顾问、专业讲师,oracle授权训练中心讲师 ...

    java开源包2

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包7

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    zxing.java源码解析-Java-Resource:Java常用框架和资源

    Java常用框架和资源 构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配置...

    Java资源包01

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

Global site tag (gtag.js) - Google Analytics