如: 
(¥1011)->(一千零一拾一元整)输出

解决方案 »

  1.   

    http://topic.csdn.net/u/20080309/02/9f514ec2-a946-483d-8cde-12e0aefa60b0.html
      

  2.   

    最近问这个真多
    前几天刚写过个
    http://topic.csdn.net/u/20080908/22/91c8a9a8-2405-4ed2-952e-a14ac4443021.html
      

  3.   


    public class test{
      String bignum[] = {"零","一","二","三","四","五","六","七","八","久"};
      String sign1[] = {"","十","百","千"};
      String sign2[] = {"圆","万","亿","兆"};
      String sign3[] = {"角","分","厘"};
      test(String s){
        s = s.replaceFirst("^0+","");
        int pt = s.indexOf(".");
        if(pt<0)
          s = parta(s);
        else
          s = parta(s.substring(0,pt))+partb(s.substring(pt+1));
        System.out.println(s);
      }
      String parta(String s){
        int[] number = new int[s.length()];
        for(int i=0;i<s.length();i++)
          number[s.length()-1-i] = Integer.parseInt(i==s.length()-1?s.substring(i):s.substring(i,i+1));
        s = "";
        for(int i=number.length-1;i>=0;i--){
          s+=bignum[number[i]];
          s+=i%4==0?sign2[i/4]:number[i]>0?sign1[i%4]:"";
        }
        while(s.indexOf("零零")!=-1)
          s=s.replaceFirst("零零","零");
        for(int i=0;i<sign1.length;i++)
          while(s.indexOf("零"+sign2[i])!=-1)
            s=s.replaceFirst("零"+sign2[i],sign2[i]);
        for(int i=sign2.length-1;i>0;i--)
          while(s.indexOf(sign2[i]+sign2[i-1])!=-1)
            s=s.replaceFirst(sign2[i]+sign2[i-1],sign2[i]);
        return s;
      }
      String partb(String s){
        int[] number = new int[s.length()];
        for(int i=0;i<s.length();i++)
          number[s.length()-1-i] = Integer.parseInt(i==s.length()-1?s.substring(i):s.substring(i,i+1));
        s = "";
        for(int i=number.length-1;i>=0;i--)
          if(number[i]>0)
            s += bignum[number[i]]+sign3[number.length-i-1];
        return s;
      }
      public static void main(String args[]){
        new test(args[0]);
      }
    }
      

  4.   

    public class StringUtil
    {
    static char [] chineseNumber = {'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};
    static char [] unitName      = {' ','拾','佰','仟'}; public static String toChinese(String numberStr)
    {
    StringBuffer rs = new StringBuffer();
    String theFloat = null;
    int dotPos = numberStr.indexOf(".");
    if (dotPos != -1)
    {
    theFloat = "点";
    String floatPart = numberStr.substring(dotPos + 1);
    numberStr = numberStr.substring(0,dotPos);
    for (int i = 0; i < floatPart.length(); i++)
    {
    theFloat += chineseNumber[floatPart.charAt(i) - '0'];
    }
    }
    int cycleCount = 0;
    boolean skip = true;
    for (int i = numberStr.length() - 1; i >= 0; i--)
    {
    if (cycleCount == 4)
    {
    rs.append("万");
    }
    else if (cycleCount == 8)
    {
    rs.append("亿");
    cycleCount = 0;
    }
    int num = (int)(numberStr.charAt(i) - '0');
    if (num > 0)
    {
    rs.append(unitName[cycleCount % 4]);
    if (skip)
    {
    skip = false;
    }
    }
    if (!skip)
    {
    rs.append(chineseNumber[num]);
    }
    cycleCount++;
    }
    int len = rs.length();
    StringBuffer sb = new StringBuffer();
    for (int i = len - 1; i >= 0; i--)
    {
    char c = rs.charAt(i);
    if (c == ' ')
    {
    continue;
    }
    sb.append(c);
    }
    if (theFloat != null)
    {
    sb.append(theFloat);
    }
    return sb.toString();
    }
    }