|
@@ -0,0 +1,69 @@
|
|
|
+package com.winhc.bigdata.spark.utils
|
|
|
+
|
|
|
+import org.apache.commons.lang3.StringUtils
|
|
|
+
|
|
|
+import java.text.DecimalFormat
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author: XuJiakai
|
|
|
+ * @date: 2020/12/5 11:53
|
|
|
+ */
|
|
|
+object RegCapitalAmount {
|
|
|
+ private val df = new DecimalFormat("00.00")
|
|
|
+
|
|
|
+ private def double2String(d: Double): String = df.format(d)
|
|
|
+
|
|
|
+
|
|
|
+ private val unit_w = Map(
|
|
|
+ "欧元" -> 7.9145,
|
|
|
+ "英镑" -> 8.7751,
|
|
|
+ "美元" -> 6.5301,
|
|
|
+ "港元" -> 0.8425,
|
|
|
+ "港币" -> 0.8425,
|
|
|
+ "台币" -> 0.2316,
|
|
|
+ "日元" -> 0.06270,
|
|
|
+ "英镑" -> 8.7751,
|
|
|
+ "加拿大元" -> 5.1096,
|
|
|
+ "新加坡元" -> 4.8907,
|
|
|
+ "澳元" -> 4.846,
|
|
|
+ "卢布" -> 0.08825,
|
|
|
+ "泰铢" -> 0.2162,
|
|
|
+ "韩元" -> 0.006025,
|
|
|
+ "澳门元" -> 0.8178
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+ private val pat = "[^0-9.]".r
|
|
|
+
|
|
|
+ def getAmount(regCapital: String): String = {
|
|
|
+ if (StringUtils.isEmpty(regCapital))
|
|
|
+ return null
|
|
|
+
|
|
|
+ var unit: Double = unit_w.filter(e => {
|
|
|
+ regCapital.contains(e._1)
|
|
|
+ }).values.headOption.getOrElse(1d)
|
|
|
+
|
|
|
+ if (regCapital.contains("亿")) {
|
|
|
+ unit *= 100000000.0d
|
|
|
+ } else if (regCapital.contains("百万")) {
|
|
|
+ unit *= 1000000.0d
|
|
|
+ } else if (regCapital.contains("万")) {
|
|
|
+ unit *= 10000.0d
|
|
|
+ }
|
|
|
+
|
|
|
+ unit *= 100.0d
|
|
|
+
|
|
|
+ try {
|
|
|
+ val amount = pat.replaceAllIn(regCapital, " ").split("\\s+")(0).toDouble
|
|
|
+ double2String(amount * unit)
|
|
|
+ } catch {
|
|
|
+ case ex: Exception => {
|
|
|
+ null
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ def main(args: Array[String]): Unit = {
|
|
|
+ print(getAmount("1万元"))
|
|
|
+ }
|
|
|
+}
|