支票金额大写转换示例(金额大写转换器)

代码如下:

import java.util.HashMap;
import java.util.Map;

public class FigureAndChinese2Util {

// 缓存所有数字的
 private static Map<Character, Character> map = new HashMap<Character, Character>(
   10);
 static {
  map.put('1', '壹');
  map.put('2', '贰');
  map.put('3', '叁');
  map.put('4', '肆');
  map.put('5', '伍');
  map.put('6', '陆');
  map.put('7', '柒');
  map.put('8', '捌');
  map.put('9', '玖');
  map.put('0', '零');
 }
 static char[] mode = new char[] { '拾', '佰', '仟' };

public static void m(String sb) {

StringBuffer sbf = new StringBuffer();
  String[] sp = sb.split("\\.");
  if (sp.length == 2) {
   m0(sp[0], 0, sbf);
   sbf.append(m2(sp[1]));
  } else
   m0(sb, 0, sbf);
  sbf.append("整");
  System.out.println(sbf);
 }

/***
  * 切割字符串
  *
  * @param sb
  */
 public static void m0(String sb, int type, StringBuffer sbf) {

int len = sb.length();
  int b = 0;
  type++;
  if (len >= 4) {
   b = len - 4;
   sbf.insert(0, m1(sb.substring(b), type));
   m0(sb.substring(0, b), type, sbf);
  } else if (len > 0)
   sbf.insert(0, m1(sb, type));
  if ('零' == sbf.charAt(0))
   sbf.deleteCharAt(0);
 }

/***
  * 处理
  *
  * @param sb
  */
 public static StringBuffer m1(String sb, int type) {

StringBuffer sbf = new StringBuffer(sb);
  switch (type) {
  case 1:
   sbf.append("圆");
   break;
  case 2:
   sbf.append("万");
   break;
  case 3:
   sbf.append("亿");
   break;
  default:
   break;
  }
  // 开始赋值
  int b = 0;
  char t = 0;
  for (int i = sbf.length() - 2; i >= 0; i--) {
   t = sbf.charAt(i);
   sbf.setCharAt(i, map.get(t));
   if (i != 0)
    sbf.insert(i, mode[b]);
   b++;
  }
  for (int i = 0; i < sbf.length(); i++) {
   t = sbf.charAt(i);
   if (t == '零') {
    t = sbf.charAt(i + 1);
    if ('圆' != t && '万' != t && '亿' != t)
     sbf.deleteCharAt(i + 1);
    else
     sbf.deleteCharAt(i);
    if (i != 0)
     if (sbf.charAt(i - 1) == '零') {
      sbf.deleteCharAt(i - 1);
      i--;
     }
   }
  }
  if (sbf.length() == 1) {
   if ('圆' != sbf.charAt(0))
    sbf.setLength(0);
  }
  return sbf;
 }

public static StringBuffer m2(String de) {

if (de.length() > 2)
   de = de.substring(0, 2);
  de = de.replaceFirst("00", "");
  StringBuffer sb = new StringBuffer(de);
  if (sb.length() > 0) {
   if (sb.charAt(sb.length() - 1) == '0')
    sb.deleteCharAt(sb.length() - 1);
   sb.setCharAt(0, map.get(sb.charAt(0)));
   switch (sb.length()) {
   case 1:
    sb.append("角");
    break;
   case 2:
    sb.setCharAt(1, map.get(sb.charAt(1)));
    if (sb.charAt(0) != '零')
     sb.insert(1, '角');
    sb.append("分");
    break;
   default:
    break;
   }
  }
  return sb;
 }

public static void main(String[] args) {

String s = "4444444441.23";
  String s1 = "1";
  String s2 = "1000000000.01";
  String s3 = "101010002.11";
  m(s);
  m(s1);
  m(s2);
  m(s3);
 }
}

(0)

相关推荐

  • 支票金额大写转换示例(金额大写转换器)

    复制代码 代码如下: import java.util.HashMap;import java.util.Map; public class FigureAndChinese2Util { // 缓存所有数字的 private static Map<Character, Character> map = new HashMap<Character, Character>(   10); static {  map.put('1', '壹');  map.put('2', '贰');

  • 利用yahoo汇率接口实现实时汇率转换示例 汇率转换器

    代码如下: 复制代码 代码如下: function getExchangeRate($from_Currency,$to_Currency){        $amount = urlencode($amount);        $from_Currency = urlencode($from_Currency);        $to_Currency = urlencode($to_Currency);        $url = "download.finance.yahoo.com/d

  • javascript将数字转换整数金额大写的方法

    本文实例讲述了javascript将数字转换整数金额大写的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: function digit_uppercase(n) { var digit = [ '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' ]; var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ]; var s = ''; for (var i = 0; i < unit[

  • PHP中字符与字节的区别及字符串与字节转换示例

    字符: 字符是可使用多种不同字符方案或代码页来表示的抽象实体.例如,Unicode UTF-16 编码将字符表示为 16 位整数序列,而 Unicode UTF-8 编码则将相同的字符表示为 8 位字节序列.公共语言运行库使用 Unicode UTF-16(Unicode 转换格式,16 位编码形式)表示字符. php在UTF-8编码下,一个汉字占3个字符,gbk编码下只占2个字符. 字节(Byte): 字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位. 应用: 如果数据库中表为UTF8

  • C# .net实现货币转换示例

    本文所述C# .net实现货币转换示例主要利用string.format 和cultureInfo 来进行转换.分享给大家供大家参考之用.具体方法如下: 主要实现代码如下: /// <summary> /// 输入Float格式数字,将其转换为货币表达方式 /// </summary> /// <param name="ftype">货币表达类型:0=带¥的货币表达方式:1=不带¥的货币表达方式:其它=带¥的货币表达方式</param>

  • SpringMVC对日期类型的转换示例

    在做web开发的时候,页面传入的都是String类型,SpringMVC可以对一些基本的类型进行转换,但是对于日期类的转换可能就需要我们配置. 1.如果查询类使我们自己写,那么在属性前面加上@DateTimeFormat(pattern = "yyyy-MM-dd")  ,即可将String转换为Date类型,如下 @DateTimeFormat(pattern = "yyyy-MM-dd") private Date createTime; 2.如果我们只负责we

  • spring mvc4的日期/数字格式化、枚举转换示例

    日期.数字格式化显示,是web开发中的常见需求,spring mvc采用XXXFormatter来处理,先看一个最基本的单元测试: package com.cnblogs.yjmyzz.test; import java.math.BigDecimal; import java.util.Date; import java.util.Locale; import org.junit.Test; import org.springframework.context.i18n.LocaleConte

  • .NET core高性能对象转换示例代码

    前言 NET Core(开放源代码,跨平台,x-copy可部署等)有许多令人兴奋的方面,其中最值得称赞的就是其性能了.关于对象转换已经有不少轮子(AutoMapper,TinyMapper) .出于项目需要,手动造一个简单轮子.下面话不多说了,来一起看看详细的介绍吧. 示例代码 g>1.采用静态泛型类缓存,避免了拆箱装箱操作. 2.对于转换对象中有,字段名一样但是类型不一样的类时仍可以用 public static class Mapper<TSource, TTarget> where

  • python日期与时间戳的各种转换示例

    官方文档的示例中没有我们习惯的日期格式,查了很多博客转换日期和时间戳也都是大概的能得到结果的方式,常将 datetime 和 time 两个模块混用,个人觉得时间格式化不应该这么麻烦,还得用两个模块来支持?故而翻遍了源码,总结以下常用的几种日期和时间戳的转换方式. 以下主要有三个元素(时间字符串,格式,Unix时间戳),可将时间字符串转为另一种时间格式,或将时间字符串转为时间戳,或将时间戳转为时间字符串. datetime 和 time 两个模块,任意一个都能转换完成. 以下两个模块均列出示例:

  • ASP.NET中DataTable与DataSet之间的转换示例

    DataSet包含了多个DataTable,以及DataTable之间的约束关系. 如果你的数据不需要做关系映射,直接用DataTable效率比较高.如果有需要1:N或N:M这样的关系查询,将DataSet中的相应DataTable全部填充,再使用关系查询数据. DataSet数据源你可以把它看成数据库,而DataTable就是数据库里的一个表 将DataTable添加到DataSet中: 在项目中遇到DataTable 无法直接转换成DataSet 时, 可以先new 可以先new DataS

随机推荐