|
@@ -17,8 +17,8 @@ var regStrUnit *regexp.Regexp //提取单位
|
|
|
|
|
|
var moneyRegChar *regexp.Regexp //提取中文数字
|
|
|
var numCapitals *regexp.Regexp //中文大写金额过滤
|
|
|
-
|
|
|
-var regQianw *regexp.Regexp //部分千万单位
|
|
|
+var regStrJe *regexp.Regexp //匹配数字金额
|
|
|
+var regQianw *regexp.Regexp //部分千万单位
|
|
|
|
|
|
var moneyChar = map[string]interface{}{ //"〇": "0", "零": "0",
|
|
|
"一": float64(1), "壹": float64(1), "二": float64(2), "贰": float64(2), "三": float64(3), "叁": float64(3), "四": float64(4), "肆": float64(4), "五": float64(5), "伍": float64(5),
|
|
@@ -34,7 +34,7 @@ func init() {
|
|
|
regOperator, _ = regexp.Compile(`[*|+|)*)]`)
|
|
|
regNumFloat, _ = regexp.Compile(`([1-9]\d*|0)(\.\d+)?`)
|
|
|
regStrUnit, _ = regexp.Compile(`[元|万|亿]`)
|
|
|
-
|
|
|
+ regStrJe = regexp.MustCompile(`([1-9]\d*|0)(\.\d+)?[\s|元|万|亿]{0,3}`)
|
|
|
regStrChar := `[〇|零|点|壹|贰|叁|肆|伍|陆|柒|捌|玖|拾|百|佰|千|仟|万|亿|億|元|圆|角|分|整|正]`
|
|
|
moneyRegChar, _ = regexp.Compile(regStrChar)
|
|
|
contentUnit, _ = regexp.Compile(`(万元|单位/万)`)
|
|
@@ -82,10 +82,17 @@ func ObjToFloat(data []interface{}) []interface{} {
|
|
|
func ObjToMoney(data []interface{}) []interface{} {
|
|
|
isfindUnit := true
|
|
|
tmpstr := (data)[0]
|
|
|
- if utf8.RuneCountInString(util.ObjToString(tmpstr)) > 20 {
|
|
|
- (data)[0] = 0
|
|
|
- data = append(data, false)
|
|
|
- return data
|
|
|
+ totmpstr := util.ObjToString(tmpstr)
|
|
|
+ if utf8.RuneCountInString(totmpstr) > 20 {
|
|
|
+ if numCapitals.MatchString(totmpstr) {
|
|
|
+ tmpstr = numCapitals.FindString(totmpstr)
|
|
|
+ } else if regStrJe.MatchString(totmpstr) {
|
|
|
+ tmpstr = regStrJe.FindString(totmpstr)
|
|
|
+ } else {
|
|
|
+ (data)[0] = 0
|
|
|
+ data = append(data, false)
|
|
|
+ return data
|
|
|
+ }
|
|
|
}
|
|
|
ret := capitalMoney(data)[0]
|
|
|
if ret.(float64) < float64(10000) || ret.(float64) > float64(50000000000) {
|