人名币金额大写转成BigDecimal类型
时间: 2023-10-17 07:00:37 浏览: 87
要将人民币金额大写转换为BigDecimal类型,您可以使用Java的正则表达式来提取金额字符串,并使用自定义的繁体字转数字的方法进行转换。以下是一个示例代码:
```java
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class InvoiceAmountConverter {
public static void main(String[] args) {
// 人民币金额大写字符串
String amountStr = "壹仟贰佰叁拾肆元伍角陆分";
// 转换为BigDecimal数值
BigDecimal amount = convertToBigDecimal(amountStr);
System.out.println(amount);
}
public static BigDecimal convertToBigDecimal(String amountStr) {
// 自定义繁体字转数字的映射表
Map<Character, Integer> tradNumMap = new HashMap<>();
tradNumMap.put('壹', 1);
tradNumMap.put('贰', 2);
tradNumMap.put('叁', 3);
tradNumMap.put('肆', 4);
tradNumMap.put('伍', 5);
tradNumMap.put('陆', 6);
tradNumMap.put('柒', 7);
tradNumMap.put('捌',8);
tradNumMap.put('玖', 9);
tradNumMap.put('拾', 10);
tradNumMap.put('佰', 100);
tradNumMap.put('仟', 1000);
// 匹配中文金额的正则表达式
String regex = "[壹贰叁肆伍陆柒捌玖拾佰仟元角分整]+";
// 创建Pattern对象
Pattern pattern = Pattern.compile(regex);
// 创建Matcher对象,进行匹配
Matcher matcher = pattern.matcher(amountStr);
// 提取中文金额字符串
if (matcher.find()) {
String chineseAmount = matcher.group(); System.out.println("中文金额:" + chineseAmount);
// 将中文金额转换为阿拉伯数字
阅读全文