/*
 * @(#)MsgSender.java 1.0 02/03/03
 *
 * You can modify the template of this file in the
 * directory ..\JCreator\Templates\Template_1\Project_Name.java
 *
 * You can also create your own project template by making a new
 * folder in the directory ..\JCreator\Template\. Use the other
 * templates as examples.
 *
 */
package com.coolservlets.beans.method;

import java.io.*;
import java.util.*;
public class genMethod {

    public static void main(String[] args)
    {
        //String str = "读出数据从外部文件BEGIN读出数据从外部文件BEGIN读出数据从外部文件BEGIN读出数据从外部文件BEGIN读出数据从外部文件BEGIN读出数据从外部文件BEGIN读出数据从外部文件BEGIN1234567890";
        //String st = getNewLineByFixedlength(str,20);
        //String st = "200,003,332,";
        //st = genMethod.replaceValueStr(st,",","");
        //System.out.println("st="+ st);
        String st = genMethod.getChnmoney("57670.56");
        System.out.println("st="+ st);
    }
    /**
     *读出数据从外部文件BEGIN
     */
    public static Vector readFileRecord(String m_InFileName)
    {
        if(m_InFileName == null) return null;
        Vector v_ReturnList = new Vector();
        try{
            String line_str;
            FileInputStream fis = new FileInputStream(m_InFileName);
            InputStreamReader isr = new InputStreamReader(fis, "GB2312");
            BufferedReader in = new BufferedReader(isr);
            while((line_str = in.readLine()) != null){
                //System.out.println("line_str length="+ line_str.trim().length());
                //line_str = line_str.toUpperCase();
                //if(line_str !=null) line_str = line_str.trim();
                line_str = (line_str != null) ? line_str.trim(): "";
                if(line_str.length() == 0) continue;
                v_ReturnList.addElement(new String(line_str));
            }
            if(v_ReturnList.size() > 0) return v_ReturnList;
            return null;
        }
        catch(IOException e){
            System.out.println(e);
            System.out.println("错误信息 :" + e.getMessage());
            return null;
        }

    }
    //读出数据从外部文件END

    /**
     *读出数据从外部文件BEGIN
     */
    public static String readFileWhere(String m_InFileName,Vector v_SpSq,Vector v_ValueSq,Vector v_ValueStr)
    {
        if(m_InFileName == null) return null;
        Vector v_ReturnList = new Vector();
        try{
            String line_str;
            FileInputStream fis = new FileInputStream(m_InFileName);
            InputStreamReader isr = new InputStreamReader(fis, "GB2312");
            BufferedReader in = new BufferedReader(isr);
            while((line_str = in.readLine()) != null){
                //System.out.println("line_str length="+ line_str.trim().length());
                //line_str = line_str.toUpperCase();
                //if(line_str !=null) line_str = line_str.trim();
                line_str = (line_str != null) ? line_str.trim(): "";
                if(line_str.length() == 0) continue;
                v_ReturnList.addElement(new String(line_str));
            }
            int loopCount = v_ReturnList.size();
            String EqReturnStr = null;
            if(loopCount > 0) {
                for(int k=0;k<loopCount;k++){
                    String m_LineStr = (String)v_ReturnList.elementAt(k);
                    int v_loop = v_SpSq.size();
                    boolean EqIs = true;
                    for(int j=0;j<v_loop;j++){
                        String t_SpSq = (String)v_SpSq.elementAt(j);
                        t_SpSq = (t_SpSq == null) ? "" : t_SpSq.trim();
                        String t_ValueSq = (String)v_ValueSq.elementAt(j);
                        t_ValueSq = (t_ValueSq == null) ? "0" : t_ValueSq.trim();
                        int i_valueSq = (new Integer(new String(t_ValueSq))).intValue();
                        String t_ValueStr = (String)v_ValueStr.elementAt(j);
                        t_ValueStr = (t_ValueStr == null) ? "" : t_ValueStr.trim();
                        String tmpStr = readValueStr(m_LineStr,t_SpSq,i_valueSq);
                        tmpStr = (tmpStr == null)? "":tmpStr.trim();
                        if(!tmpStr.equalsIgnoreCase(t_ValueStr)){
                            EqIs = false;
                            break;
                        }
                    }
                    if(EqIs){
                        EqReturnStr = m_LineStr;
                        break;
                    }
                }
                return EqReturnStr;
            }else{
                return null;
            }

        }
        catch(IOException e){
            System.out.println(e);
            System.out.println("错误信息 :" + e.getMessage());
            return null;
        }

    }
    //读出数据从外部文件END
    /**
     *读出数据从外部文件BEGIN
     */
    public static Vector readFileWhereCon(String m_InFileName,Vector v_SpSq,Vector v_ValueSq,Vector v_ValueStr)
    {
        if(m_InFileName == null) return null;
        Vector v_ReturnList = new Vector();
        Vector v_ReturnVector = new Vector();
        try{
            String line_str;
            FileInputStream fis = new FileInputStream(m_InFileName);
            InputStreamReader isr = new InputStreamReader(fis, "GB2312");
            BufferedReader in = new BufferedReader(isr);
            while((line_str = in.readLine()) != null){
                //System.out.println("line_str length="+ line_str.trim().length());
                //line_str = line_str.toUpperCase();
                //if(line_str !=null) line_str = line_str.trim();
                line_str = (line_str != null) ? line_str.trim(): "";
                if(line_str.length() == 0) continue;
                v_ReturnList.addElement(new String(line_str));
            }
            int loopCount = v_ReturnList.size();
            String EqReturnStr = null;
            if(loopCount > 0) {
                for(int k=0;k<loopCount;k++){
                    String m_LineStr = (String)v_ReturnList.elementAt(k);
                    int v_loop = v_SpSq.size();
                    boolean EqIs = true;
                    for(int j=0;j<v_loop;j++){
                        String t_SpSq = (String)v_SpSq.elementAt(j);
                        t_SpSq = (t_SpSq == null) ? "" : t_SpSq.trim();
                        String t_ValueSq = (String)v_ValueSq.elementAt(j);
                        t_ValueSq = (t_ValueSq == null) ? "0" : t_ValueSq.trim();
                        int i_valueSq = (new Integer(new String(t_ValueSq))).intValue();
                        String t_ValueStr = (String)v_ValueStr.elementAt(j);
                        t_ValueStr = (t_ValueStr == null) ? "" : t_ValueStr.trim();
                        String tmpStr = readValueStr(m_LineStr,t_SpSq,i_valueSq);
                        tmpStr = (tmpStr == null)? "":tmpStr.trim();
                        if(!tmpStr.equalsIgnoreCase(t_ValueStr)){
                            EqIs = false;
                            break;
                        }
                    }
                    if(EqIs){
                        EqReturnStr = m_LineStr;
                        v_ReturnVector.addElement(new String(EqReturnStr));
                    }
                }
                return v_ReturnVector;
            }else{
                return null;
            }

        }
        catch(IOException e){
            System.out.println(e);
            System.out.println("错误信息 :" + e.getMessage());
            return null;
        }

    }
    //读出数据从外部文件END
    /**
     *写数据到外部文件BEGIN
     */
    public static int writeFileRecord(Vector w_DBDdatDictList,String obj_OutfileName,String m_WriteOp)
    {
        try{
            Vector obj_DBDdatDictList = new Vector();
            if(m_WriteOp.equalsIgnoreCase("0")) obj_DBDdatDictList = readFileRecord(obj_OutfileName);
            obj_DBDdatDictList =(obj_DBDdatDictList == null) ? new Vector():obj_DBDdatDictList;
            //if(obj_DBDdatDictList != null || !obj_DBDdatDictList.isEmpty()){
            for(int j=0;j<w_DBDdatDictList.size();j++){
                obj_DBDdatDictList.addElement(new String(((String)w_DBDdatDictList.elementAt(j))));
            }
            //}else{
            //  obj_DBDdatDictList = w_DBDdatDictList;
            //}
            String line_str = null;
            File m_DBDictFile = new File(obj_OutfileName);
            //if(m_DBDictFile.exists()){
            FileWriter fileWriter = new FileWriter(m_DBDictFile);
            BufferedWriter writer = new BufferedWriter(fileWriter);
            for(int i=0;i<obj_DBDdatDictList.size();i++){
                line_str = ((String)obj_DBDdatDictList.elementAt(i));
                writer.write(line_str);
                writer.newLine();
            }
            writer.close();
            //} else{
            //   System.out.println(obj_OutfileName+"  not exist");
            //  return RESULT_ERR;
            //}
            return 0;
        }
        catch(IOException e){
            System.out.println(e);
            System.out.println("错误信息 :" + e.getMessage());
            return 1;
        }

    }
    //写数据库词典到外部文件END
    /**
     *读出数据从指定分割符的第几个分割符的值
     */
    public static String readValueStr(String p_LineStr,String p_Separ,int p_Sque)
    {
        //判断处理行的格式
        int m_StartStr = 0;
        int m_StopStr =0;
        if(p_LineStr.length() == 0) return "";
        if(p_LineStr.length() < p_Separ.length()) {
            p_LineStr = p_LineStr + p_Separ;
        }else{
            m_StartStr = p_LineStr.length() - p_Separ.length();
            m_StopStr  = p_LineStr.length();
            String SeparStr = p_LineStr.substring(m_StartStr,m_StopStr);
            if(!SeparStr.equalsIgnoreCase(p_Separ)){
                p_LineStr = p_LineStr + p_Separ;
            }
        }
        m_StartStr = 0;
        m_StopStr =0;
        int sp = 0;
        String p_SEPARATOR = p_Separ;
        String SubStr = null;
        while((p_LineStr.indexOf(p_SEPARATOR,m_StartStr) > -1) && (sp < p_Sque + 1) ){
            m_StopStr = p_LineStr.indexOf(p_SEPARATOR,m_StartStr);
            SubStr = p_LineStr.substring(m_StartStr,m_StopStr);
            m_StartStr = m_StopStr+p_SEPARATOR.length();
            sp = sp +1;
        }
        SubStr = (SubStr == null) ? p_LineStr : SubStr;
        return SubStr;

    }

    /**
     *读出共有几个分割符的值
     */
    public static int statSeparCount(String p_LineStr,String p_Separ)
    {
        //判断处理行的格式
        int m_StartStr = 0;
        int m_StopStr =0;
        if(p_LineStr.length() == 0) return 0;
        if(p_LineStr.length() < p_Separ.length()) {
            p_LineStr = p_LineStr + p_Separ;
        }else{
            m_StartStr = p_LineStr.length() - p_Separ.length();
            m_StopStr  = p_LineStr.length();
            String SeparStr = p_LineStr.substring(m_StartStr,m_StopStr);
            if(!SeparStr.equalsIgnoreCase(p_Separ)){
                p_LineStr = p_LineStr + p_Separ;
            }
        }
        m_StartStr = 0;
        m_StopStr =0;
        int sp = 0;
        String p_SEPARATOR = p_Separ;
        while((p_LineStr.indexOf(p_SEPARATOR,m_StartStr) > -1)){
            m_StopStr = p_LineStr.indexOf(p_SEPARATOR,m_StartStr);
            m_StartStr = m_StopStr+p_SEPARATOR.length();
            sp = sp +1;
        }
        return sp;
    }

    /**
     *读出数据从指定分割符的第几个分割符的值
     */
    public static String readValueStrWhere(Vector p_readVector,String p_Separ,int p_Sque,int p_WhereSque,String p_WhereValue)
    {
        String returnStr = null;
        int loopCount = p_readVector.size();
        for(int i=0;i<loopCount;i++){
            String tmpLineStr = (String)p_readVector.elementAt(i);
            tmpLineStr = (tmpLineStr == null) ? "":tmpLineStr.trim();
            if(tmpLineStr.length() == 0) continue;
            String tmpSubStr = readValueStr(tmpLineStr,p_Separ,p_WhereSque);
            tmpSubStr =(tmpSubStr == null) ? "":tmpSubStr.trim();
            if(p_WhereValue.equalsIgnoreCase(tmpSubStr)){
                returnStr = readValueStr(tmpLineStr,p_Separ,p_Sque);
                returnStr = (returnStr == null) ? null:returnStr.trim();
                break;
            }
        }
        return returnStr;
    }

    /**
     *读出数据从指定分割符的第几个分割符的值返回一行
     */
    public static String readValueLineWhere(Vector p_readVector,String p_Separ,int p_WhereSque,String p_WhereValue)
    {
        String returnStr = null;
        int loopCount = p_readVector.size();
        for(int i=0;i<loopCount;i++){
            String tmpLineStr = (String)p_readVector.elementAt(i);
            tmpLineStr = (tmpLineStr == null) ? "":tmpLineStr.trim();
            if(tmpLineStr.length() == 0) continue;
            String tmpSubStr = readValueStr(tmpLineStr,p_Separ,p_WhereSque);
            tmpSubStr =(tmpSubStr == null) ? "":tmpSubStr.trim();
            if(p_WhereValue.equalsIgnoreCase(tmpSubStr)){
                returnStr = tmpLineStr;
                returnStr = (returnStr == null) ? null:returnStr.trim();
                break;
            }
        }
        return returnStr;
    }
    /**
     *读出数据从指定分割符的第几个分割符的值
     */
    public static Vector readValueVectorWhere(Vector p_readVector,String p_Separ,int p_Sque,int p_WhereSque,String p_WhereValue)
    {
        Vector returnVector = new Vector();
        int loopCount = p_readVector.size();
        for(int i=0;i<loopCount;i++){
            String tmpLineStr = (String)p_readVector.elementAt(i);
            tmpLineStr = (tmpLineStr == null) ? "":tmpLineStr.trim();
            if(tmpLineStr.length() == 0) continue;
            String tmpSubStr = readValueStr(tmpLineStr,p_Separ,p_WhereSque);
            tmpSubStr =(tmpSubStr == null) ? "":tmpSubStr.trim();
            if(p_WhereValue.equalsIgnoreCase(tmpSubStr)){
                String putStr = readValueStr(tmpLineStr,p_Separ,p_Sque);
                putStr = (putStr == null) ? "":putStr.trim();
                returnVector.addElement(new String(putStr));
            }
        }
        return returnVector;
    }
    /**
     *替换数据从指定分割符的第几个分割符的值
     */
    public static String replaceValueStr(String p_LineStr,String p_Separ,int p_Sque,String p_RepStr)
    {
        //判断处理行的格式
        int m_StartStr = 0;
        int m_StopStr =0;
        if(p_LineStr.length() == 0) return "";
        if(p_LineStr.length() < p_Separ.length()) {
            p_LineStr = p_LineStr + p_Separ;
        }else{
            m_StartStr = p_LineStr.length() - p_Separ.length();
            m_StopStr  = p_LineStr.length();
            String SeparStr = p_LineStr.substring(m_StartStr,m_StopStr);
            if(!SeparStr.equalsIgnoreCase(p_Separ)){
                p_LineStr = p_LineStr + p_Separ;
            }
        }
        m_StartStr = 0;
        m_StopStr =0;
        int sp = 0;
        String p_SEPARATOR = p_Separ;
        String SubStr = null;
        String NewValueStr = "";
        while((p_LineStr.indexOf(p_SEPARATOR,m_StartStr) > -1)){
            m_StopStr = p_LineStr.indexOf(p_SEPARATOR,m_StartStr);
            SubStr = p_LineStr.substring(m_StartStr,m_StopStr);
            NewValueStr = (sp == p_Sque) ? NewValueStr + p_RepStr + p_SEPARATOR : NewValueStr + SubStr + p_SEPARATOR;
            m_StartStr = m_StopStr+p_SEPARATOR.length();
            sp = sp +1;
        }
        return NewValueStr;
    }

    /**
     *替换字符串
     */
    public static String replaceValueStr(String p_LineStr,String p_oldStr,String p_newStr)
    {
        //判断处理行的格式

        int m_StartStr = 0;
        int m_StopStr =0;
        String SubStr = null;
        int sp = 0;
        String NewValueStr = "";
        while((p_LineStr.indexOf(p_oldStr,m_StartStr) > -1)){
            m_StopStr = p_LineStr.indexOf(p_oldStr,m_StartStr);
            String beSubStr = p_LineStr.substring(m_StartStr,m_StopStr);
            String afSubStr = p_LineStr.substring(m_StopStr+p_oldStr.length(),p_LineStr.length());
            NewValueStr = beSubStr + p_newStr + afSubStr;
            //System.out.println(NewValueStr);
            p_LineStr = NewValueStr;
            //m_StartStr = m_StopStr+p_newStr.length();
            m_StartStr = 0;
        }
        return p_LineStr;
    }

    /**
     *
     */
    public static int gradeValue(String p_fristStr,String p_secondStr)
    {
        //过滤空格字符
        String tmpStr = "";
        int loopCount = p_fristStr.length();
        for(int i=0;i<loopCount;i++){
            String t_Str = p_fristStr.substring(i,i+1);
            t_Str = (t_Str == null) ? "" :t_Str.trim();
            if(t_Str.length() > 0){
                tmpStr = tmpStr + t_Str;
            }
        }
        p_fristStr = tmpStr;
        //过滤空格字符
        tmpStr = "";
        loopCount = p_secondStr.length();
        for(int i=0;i<loopCount;i++){
            String t_Str = p_secondStr.substring(i,i+1);
            t_Str = (t_Str == null) ? "" :t_Str.trim();
            if(t_Str.length() > 0){
                tmpStr = tmpStr + t_Str;
            }
        }
        p_secondStr = tmpStr;
        if(p_fristStr.length() == 0) return 0;
        if(p_secondStr.length() == 0) return 0;
        //判断处理行的格式
        int gradeValueInt = 0;
        if(p_fristStr.equalsIgnoreCase(p_secondStr)){
            //相等得满分
            gradeValueInt = 10;
        }else{
            //不相等判断是否为包含
            String MaxcompStr;
            String MincompStr;
            MaxcompStr = (p_fristStr.length() > p_secondStr.length()) ? p_fristStr :p_secondStr;
            MincompStr = (p_fristStr.length() < p_secondStr.length()) ? p_fristStr :p_secondStr;
            if(MaxcompStr.indexOf(MincompStr,0) > 0){
                gradeValueInt = 9;
            }else{
                //比较相似比率
                int loopCompCount = MaxcompStr.length() - MincompStr.length();
                int MaxequalsCount = 0;
                for(int j=0;j<loopCompCount;j++){
                    int loopCountN = MincompStr.length();
                    int equalsCount = 0;
                    for(int n=0;n<loopCountN;n++){
                        String tmpMaxStr = MaxcompStr.substring(j+n,j+n+1);
                        String tmpMinStr = MincompStr.substring(n,n+1);
                        equalsCount = (tmpMaxStr.equalsIgnoreCase(tmpMinStr)) ? equalsCount+1 :equalsCount;
                    }
                    MaxequalsCount = (MaxequalsCount < equalsCount) ? equalsCount :MaxequalsCount;
                }
                float gradeValueFloat = ((float)MaxequalsCount/MincompStr.length()) * 9;
                String gradeValueStr = Float.toString(gradeValueFloat);
                String tmpIntStr = gradeValueStr.substring(0,gradeValueStr.indexOf(".",0));
                gradeValueInt = Integer.parseInt(tmpIntStr);
            }
        }
        return gradeValueInt;
    }

    /**
     *排序数据从指定分割符的第几个分割符的值
     * p_CharInt: 排序是按字符还是字符值 "0" -- 按字符排序；"1" -- 按字符的数值排序
     * p_sortVector: 排序的Vector;p_Separ : 分割符；p_Sque ：排序的第几个值；g_Separ：；g_Sque：
     */
    public static Vector sortValueStr(Vector p_sortVector,String p_Separ,int p_Sque,String p_CharInt,String g_Separ,int g_Sque)
    {
        int ArraryCount = p_sortVector.size();
        Vector ReturnVector = new Vector();
        String[] sortArrary = new String[p_sortVector.size()];
        for(int i=0;i<ArraryCount;i++){
            String tmpStr = (String)p_sortVector.elementAt(i);
            sortArrary[i] = tmpStr;
        }
        int g_StartNo = 0;
        int g_StopNo = 0;
        while(g_StartNo < ArraryCount){
            if(g_Separ == null && g_Sque == 0){
                g_StopNo = ArraryCount;
            }else{
                //查找g_StopNo
                String f_tmpLineStr = sortArrary[g_StartNo];
                String f_sortStr = readValueStr(f_tmpLineStr,g_Separ,g_Sque);
                f_sortStr = (f_sortStr == null) ? "" : f_sortStr.trim();
                if(g_StartNo+1 == ArraryCount) g_StopNo = ArraryCount;
                for(int l=g_StartNo+1;l<ArraryCount;l++){
                    if(l + 1 == ArraryCount) {
                        g_StopNo = ArraryCount;
                        break;
                    }
                    String s_tmpLineStr = sortArrary[l];
                    String s_sortStr = readValueStr(s_tmpLineStr,g_Separ,g_Sque);
                    s_sortStr = (s_sortStr == null) ? "" : s_sortStr.trim();
                    if(!f_sortStr.equalsIgnoreCase(s_sortStr)){
                        g_StopNo = l;
                        break;
                    }
                }
            }
            for(int j=g_StartNo;j<g_StopNo;j++){
                String f_tmpLineStr = sortArrary[j];
                String f_sortStr = readValueStr(f_tmpLineStr,p_Separ,p_Sque);
                f_sortStr = (f_sortStr == null) ? "" : f_sortStr.trim();
                String MiniValueStr = "";
                int MiniValueInt = 0 ;
                if(p_CharInt.equalsIgnoreCase("0")){
                    MiniValueStr = f_sortStr;
                }else{
                    MiniValueInt = (new Integer(new String(f_sortStr))).intValue();
                }
                int MiniLineNo = j;
                for(int k=j+1;k<g_StopNo;k++){
                    String s_tmpLineStr = sortArrary[k];
                    String s_sortStr = readValueStr(s_tmpLineStr,p_Separ,p_Sque);
                    s_sortStr = (s_sortStr == null) ? "" : s_sortStr.trim();
                    if(p_CharInt.equalsIgnoreCase("0")){
                        if(MiniValueStr.compareTo(s_sortStr) > 0){
                            MiniValueStr = s_sortStr;
                            MiniLineNo = k;
                        }
                    }else{
                        int s_sortInt = (new Integer(new String(s_sortStr))).intValue();
                        if(MiniValueInt > s_sortInt){
                            MiniValueInt = s_sortInt;
                            MiniLineNo = k;
                        }
                    }
                }
                String putTmp = sortArrary[j];
                sortArrary[j] = sortArrary[MiniLineNo];
                sortArrary[MiniLineNo] = putTmp;
            }
            g_StartNo = g_StopNo;
        }
        for(int n=0;n< ArraryCount;n++){
            String putStr = sortArrary[n];
            ReturnVector.addElement(new String(putStr));
        }
        return ReturnVector;
    }

    public static String[] split(String p_LineStr, String p_Separ) {
        Vector vArry = new Vector();
        //判断处理行的格式
        int m_StartStr = 0;
        int m_StopStr = 0;
        if (p_LineStr.length() == 0)return null;
        if (p_LineStr.length() < p_Separ.length()) {
            p_LineStr = p_LineStr + p_Separ;
        }
        else {
            m_StartStr = p_LineStr.length() - p_Separ.length();
            m_StopStr = p_LineStr.length();
            String SeparStr = p_LineStr.substring(m_StartStr, m_StopStr);
            if (!SeparStr.equalsIgnoreCase(p_Separ)) {
                p_LineStr = p_LineStr + p_Separ;
            }
        }
        m_StartStr = 0;
        m_StopStr = 0;
        String p_SEPARATOR = p_Separ;
        String SubStr = null;
        while ( (p_LineStr.indexOf(p_SEPARATOR, m_StartStr) > -1)) {
            m_StopStr = p_LineStr.indexOf(p_SEPARATOR, m_StartStr);
            SubStr = p_LineStr.substring(m_StartStr, m_StopStr);
            SubStr = (SubStr == null) ? "" : SubStr.trim();
            vArry.addElement(new String(SubStr));
            m_StartStr = m_StopStr + p_SEPARATOR.length();
        }
        int loop = vArry.size();
        String[] sArry = new String[loop];
        for (int z = 0; z < loop; z++) {
            String s = (String) vArry.elementAt(z);
            sArry[z] = s;
        }
        return sArry;
    }
    /**
     * 实现人民币小写转大写
     * @param strNum
     * @return
     */
    public static String getChnmoney(String strNum){
        int n,m,k,i,j,q,p,r,s=0;
        int length,subLength,pstn;
        String change,output,subInput,input=strNum;
        output="";
        if(strNum.equals(""))
            return null;
        else
        {
            length=input.length();
            pstn=input.indexOf('.'); //小数点的位置

            if(pstn==-1)
            {
                subLength=length;//获得小数点前的数字
                subInput=input;
            }
            else
            {
                subLength=pstn;
                subInput=input.substring(0,subLength);
            }

            char[] array=new char[4];
            char[] array2={'仟','佰','拾'};
            char[] array3={'亿','万','元','角','分'};

            n=subLength/4;//以千为单位
            m=subLength%4;

            if(m!=0)
            {
                for(i=0;i<(4-m);i++)
                {
                    subInput='0'+subInput;//补充首位的零以便处理
                }
                n=n+1;
            }
            k=n;

            for(i=0;i<n;i++)
            {
                p=0;
                change=subInput.substring(4*i,4*(i+1));
                array=change.toCharArray();//转换成数组处理

                for(j=0;j<4;j++)
                {
                    output+=formatC(array[j]);//转换成中文
                    if(j<3)
                    {
                        output+=array2[j];//补进单位，当为零是不补（千百十）
                    }
                    p++;
                }

                if(p!=0)  output+=array3[3-k];//补进进制（亿万元分角）
                //把多余的零去掉

                String[] str={"零仟","零佰","零拾"};
                for(s=0;s<3;s++)
                {
                    while(true)
                    {
                        q=output.indexOf(str[s]);
                        if(q!=-1)
                            output=output.substring(0,q)+"零"+output.substring(q+str[s].length());
                        else
                            break;
                    }
                }
                while(true)
                {
                    q=output.indexOf("零零");
                    if(q!=-1)
                        output=output.substring(0,q)+"零"+output.substring(q+2);
                    else
                        break;
                }
                String[] str1={"零亿","零万","零元"};
                for(s=0;s<3;s++)
                {
                    while(true)
                    {
                        q=output.indexOf(str1[s]);
                        if(q!=-1)
                            output=output.substring(0,q)+output.substring(q+1);
                        else
                            break;
                    }
                }
                k--;
            }

            if(pstn!=-1)//小数部分处理
            {
                for(i=1;i<length-pstn;i++)
                {
                    if(input.charAt(pstn+i)!='0')
                    {
                        output+=formatC(input.charAt(pstn+i));
                        output+=array3[2+i];
                    }
                    else if(i<2)
                        output+="零";
                    else
                        output+="";
                }
            }
            if(output.substring(0,1).equals("零"))
                output=output.substring(1);
            if(output.substring(output.length()-1,output.length()).equals("零"))
                output=output.substring(0,output.length()-1);
            return output+="整";
        }
    }

    public static String get3Eng(String strNum){
        String strEng= "";
        String str[] = {"","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE"};
        String str1[] = {"TEN","ELEVEN","TWELVE","THIRTEEN","FOURTEEN","FIFTEEN","SIXTEEN","SEVENTEEN","EIGHTEEN","NINETEEN"};
        String str2[] = {"TEN","TWENTY","THIRTY","FORTY","FIFTY","SIXTY","SEVENTY","EIGHTY","NINETY","HUNDRED"};
        int length = strNum.length();
        int num = Integer.parseInt(strNum);
        int b = num/100;
        int t = (num%100)/10;
        int g = (num%100)%10;
        if (b!=0){
            strEng = strEng + str[b] + " " + str2[9];
        }

        if (t==0){
            if(g!=0){
                if(b!=0){
                    strEng = strEng + " AND ";
                }
                strEng = strEng  + str[g];
            }
        }else if (t==1){
            if(b!=0){
                strEng = strEng + " AND ";
                num=num%100;
            }
            strEng = strEng  +str1[num-10];
        }else if(t!=1){
            if (g!=0){
                if(b!=0){
                    strEng = strEng + " AND ";
                }
                strEng = strEng  + str2[t-1] + "-" + str[g];
            }else{
                if(b!=0){
                    strEng = strEng + " AND ";
                }
                strEng = strEng  + str2[t-1] + str[g];
            }
        }
        return strEng;
    }
    /**
     * 字符串按照固定长度自动换行
     * @param str
     * @param iLength
     * @return
     */
    public static String getNewLineByFixedlength(String str,int iLength){
        int nloop = str.length();
        int ActLength = 0;
        String fix = "";
        String newstr = "";
        for(int n=0;n<nloop;n++){
            String st = str.substring(n, n+1);
            int aLength = 0;
            if(com.coolservlets.beans.method.CheckMethod.isHanZi(st)){
                aLength = 2;
                ActLength = ActLength + aLength;
            }else{
                aLength = 1;
                ActLength = ActLength + aLength;
            }
            if(ActLength > iLength){
                newstr = newstr + fix;
                ActLength = aLength;
                fix = "\n" + st;
            }else{
                fix = fix + st;
            }
        }
        newstr = newstr + fix;
        return  newstr;
    }
    public static String getCent(String strNum){
        String strEng= "";
        String str[] = {"","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE"};
        String str1[] = {"TEN","ELEVEN","TWELVE","THIRTEEN","FOURTEEN","FIFTEEN","SIXTEEN","SEVENTEEN","EIGHTEEN","NINETEEN"};
        String str2[] = {"TEN","TWENTY","THIRTY","FORTY","FIFTY","SIXTY","SEVENTY","EIGHTY","NINETY","HUNDRED"};
        String str3[] = {"CENTS","","DOLLARS","","HUNDRED","THOUSAND","","","MILLION","","","BILLION","",""};
        if(strNum.equals(""))
            return null;
        else
        {
            int length = strNum.length();
            if (length!=3){
                return "输入的位数错误！";
            }
            int cent = Integer.parseInt(strNum.substring(1,3));
            if (cent==0){
                return strEng;
            }
            if (cent<10){
                strEng =str3[0]+" "+ strEng + str[cent] ;
            }else if (cent>=10&&cent<=19){
                strEng =str3[0]+" "+ strEng + str1[cent-10] ;
            }else if (cent>19){
                int jiao = cent/10;
                int fen = cent%10;
                if (fen!=0){
                    strEng = str3[0]+" "+strEng + str2[jiao-1] + "-" +str[fen];
                }else{
                    strEng = str3[0]+" "+strEng + str2[jiao-1] + str[fen];
                }
            }
            return strEng;
        }
    }
    public static String getEngmoney(String strNum) {
        String strNumber="";
        String str3[] = {"CENTS","","DOLLARS","","HUNDRED","THOUSAND","","","MILLION","","","BILLION","",""};
        String strEng="";
        strNumber = strNum;
        int pointbz = strNumber.indexOf(".");
        if (pointbz < 0){
            strNumber = strNumber+".00";
        }else if(pointbz > 0){
            int k = strNum.length() - pointbz;
            if(k==2){
                strNumber = strNumber+"0";
            }else if(k==1){
                strNumber = strNumber+"00";
            }
        }
        int length = strNumber.length();
        if (length > 16){
            return "您输入的值过大系统无法处理！";
        }
        String strb ="";
        String strm ="";
        String strq ="";
        String stry ="";
        String strf ="";
        //得到分
        if(length==3){
            strf = getCent(strNumber);
            strEng = strEng + strf;
        }else if(length>3&&length<7){
            stry = get3Eng(strNumber.substring(0,length-3));
            strf = getCent(strNumber.substring(length-3,length));
            strEng = strEng + stry + " " + str3[2];
            if (!strf.equals("")){
                strEng = strEng + " AND " +strf;
            }
        }else if(length>6&&length<10){
            strq = get3Eng(strNumber.substring(0,length-6));
            stry = get3Eng(strNumber.substring(length-6,length-3));
            strf = getCent(strNumber.substring(length-3,length));
            strEng = strEng + strq + " " + str3[5];
            if(stry.equals("")){
                strEng = strEng + " " +stry;
            }else{
                strEng = strEng + " " +stry + " " + str3[2];
            }
            if(!strf.equals("")){
                strEng = strEng + " AND " +strf;
            }
        }else if(length>9&&length<13){
            strm = get3Eng(strNumber.substring(0,length-9));
            strq = get3Eng(strNumber.substring(length-9,length-6));
            stry = get3Eng(strNumber.substring(length-6,length-3));
            strf = getCent(strNumber.substring(length-3,length));
            strEng = strEng + strm + " " + str3[8];
            if(!strq.equals("")){
                strEng = strEng + " " + strq + " " + str3[5];
            }
            if(!stry.equals("")){
                strEng = strEng + " " + stry + " " + str3[2];
            }else{
                strEng = strEng + " " + str3[2];
            }
            if(!strf.equals("")){
                strEng = strEng + " AND " + strf;
            }
        }else if(length>12&&length<16){
            strb = get3Eng(strNumber.substring(0,length-12));
            strm = get3Eng(strNumber.substring(length-12,length-9));
            strq = get3Eng(strNumber.substring(length-9,length-6));
            stry = get3Eng(strNumber.substring(length-6,length-3));
            strf = getCent(strNumber.substring(length-3,length));
            strEng = strEng + strb + " " + str3[11];
            if(!strm.equals("")){
                strEng = strEng + " " + strm + " " + str3[8];
            }
            if(!strq.equals("")){
                strEng = strEng + " " + strq + " " + str3[5];
            }
            if(!stry.equals("")){
                strEng = strEng + " " + stry + " " + str3[2];
            }else{
                strEng = strEng + " " + str3[2];
            }
            if(!strf.equals("")){
                strEng = strEng + " AND " + strf;
            }
        }

        return strEng+" ONLY";
    }

    public static String formatC(char x)
    {
        String a="";
        switch(x)
        {
            case'0':  a="零";
                break;
            case'1':  a="壹";
                break;
            case'2':  a="贰";
                break;
            case'3':  a="叁";
                break;
            case'4':  a="肆";
                break;
            case'5': a="伍";
                break;
            case'6':  a="陆";
                break;
            case'7':  a="柒";
                break;
            case'8':  a="捌";
                break;
            case'9':  a="玖";
                break;
        }
        return a;
    }

    /**
     * 获得EXCEL 电子表格按照字符标定的列的列号
     * @param cn
     * @return
     */
    public static int getExcelColumByString(String sColum){
        int loop = sColum.length();
        int iColum = 0;
        int n = 0;
        for(int   i=loop-1;i>=0;i--)
        {
            int ascii=sColum.charAt(i);
            //开方
            int evolution = (n == 0)?1:n * 26;
            iColum = iColum + evolution * (ascii - 64);
            n++;
        }
        return iColum - 1;
    }
}
