wcj 6 năm trước cách đây
mục cha
commit
cd13c1d3f0

+ 2 - 1
src/jy/clear/clear.go

@@ -26,6 +26,7 @@ func init() {
 	BindFn("clearProjectName", ClearProjectName) //清理项目名称
 	BindFn("getPhone", GetPhone)                 //取手机号
 	BindFn("chiToEng", ChiToEng)                 //中文符号转英文
+	BindFn("clearBuyerPerson", ClearBuyerPerson) //处理较长采购联系人
 }
 
 //绑定清理方法
@@ -49,7 +50,7 @@ func DoClearFn(clear []string, data []interface{}) []interface{} {
 }
 
 //取手机号
-var PhoneReg = regexp.MustCompile("((([((]\\d{3,4}[))])?(\\d{6,12}([×―—-\\-]+\\d{3,4})?|\\d{3,4}[×―—-\\-]+[\u3000\u2003\u00a0\\s]*\\d{6,12}([×―—-\\-]+\\d{4})?|(\\d{2}[×―—-\\-])+\\d{8}[×―—-\\-](\\d{3}[、])+)(转\\d{3,4})?[或/、,,;;\u3000\u2003\u00a0\\s]*)+(\\d{3,})?)")
+var PhoneReg = regexp.MustCompile("((([((]\\d{3,4}[))])?(\\d{6,12}([×―—-\\-]+\\d{3,4})?|\\d{3,4}[×―—-\\-]+[\u3000\u2003\u00a0\\s]*\\d{6,12}([×―—-\\-]+\\d{4})?|\\d{3,4}\\*{3,4}\\d{3,4}|(\\d{2}[×―—-\\-])+\\d{8}[×―—-\\-](\\d{3}[、])+)(转\\d{3,4})?[或/、,,;;\u3000\u2003\u00a0\\s]*)+(\\d{3,})?)")
 
 func GetPhone(data []interface{}) []interface{} {
 	data[0] = PhoneReg.FindString(fmt.Sprint(data[0]))

+ 19 - 0
src/jy/clear/cutspace.go

@@ -9,12 +9,14 @@ import (
 var cutSpace *regexp.Regexp
 var cutAllSpace *regexp.Regexp
 var catSymbol *regexp.Regexp
+var separateSymbol *regexp.Regexp
 var spaces = []string{"\u3000", "\u2003", "\u00a0", "\t", "\r", "\n"}
 
 func init() {
 	cutSpace, _ = regexp.Compile(`^\s*|\s*$`)
 	cutAllSpace, _ = regexp.Compile(`\s*`)
 	catSymbol, _ = regexp.Compile(`[]+`)
+	separateSymbol, _ = regexp.Compile("[\\s\u3000\u2003\u00a0\\n、.,,.。、|]")
 }
 
 var LableStr = "&?(amp|nbsp|#8266);?|(<).*?(>?)"
@@ -164,3 +166,20 @@ func ChiToEng(data []interface{}) []interface{} {
 	data[0] = value
 	return data
 }
+
+func ClearBuyerPerson(data []interface{}) []interface{} {
+	value := fmt.Sprint(data[0])
+	tmp := []string{}
+	if len([]rune(value)) > 4 { //名字默认最长4
+		valuearr := separateSymbol.Split(value, -1)
+		for _, v := range valuearr {
+			if len([]rune(v)) <= 4 { //长度大于4认为不是名字
+				tmp = append(tmp, v)
+			}
+		}
+		data[0] = strings.Join(tmp, ",")
+	} else {
+		data[0] = value
+	}
+	return data
+}

+ 8 - 1
src/jy/pretreated/analystep.go

@@ -57,6 +57,7 @@ func AnalyStart(job *util.Job) {
 			newCon = TextAfterRemoveTable(con)
 			job.BlockPackage = FindPackageFromText(job.Title, newCon)
 			for i := 0; i < len(tabs); i++ {
+				//log.Println(tabs[i].Text())
 				//添加标识:文本中有table
 				tabres := AnalyTableV2(tabs[i], job.Category, "", con, 1, job.SourceMid, job.RuleBlock) //解析表格入口 返回:汇总表格对象
 				processTableResult(tabres, bl, job)
@@ -103,8 +104,14 @@ func FindProjectCode(newCon string, job *util.Job) {
 		return
 	}
 	var proCode string
-	proCode = projectcodeReg.FindString(newCon)
 	blCode := &util.Block{}
+	if projectcodeRegAll.MatchString(newCon){//项目名称项目编号一起的5d424bdfa5cb26b9b7ac7a85
+		splitStr := strings.Split(newCon, " ")
+		if len(splitStr) >=2{
+			newCon = "项目编号:"+splitStr[len(splitStr)-1]
+		}
+	}
+	proCode = projectcodeReg.FindString(newCon)
 	if proCode != "" {
 		ckv := GetKVAll(proCode, job.Title, nil, 1)
 		blCode.ColonKV = ckv

+ 4 - 3
src/jy/pretreated/analytable.go

@@ -93,10 +93,10 @@ var (
 	projectnameReg = regexp.MustCompile("((公开)?招标)*[((第]*[一二三四五六七八九十a-zA-Z0-9]+(标段|包|标|段)[))]*$")
 	MhSpilt        = regexp.MustCompile("[::]")
 	//识别采购单位联系人、联系电话、代理机构联系人、联系电话
-	ContactInfoVagueReg = regexp.MustCompile("邮政编码|邮编|(征求意见|报名审核购买)?((联系人?(及|和)?|办公)?((电话([//]传真)?|手机)(号码)?|邮箱(地址)?|(地(址|点)))|(联系|收料)(人(姓名)?|方式)|传真|电子邮件|(主要负责|项目(负责|联系)|(项目)?经办)人)|采购方代表")
+	ContactInfoVagueReg = regexp.MustCompile("邮政编码|邮编|名称|(征求意见|报名审核购买)?((联系人?(及|和)?|办公)?((电话([//]传真)?|手机)(号码)?|邮箱(地址)?|(地(址|点)))|(联系|收料)(人(姓名)?|方式)|传真|电子邮件|(主要负责|项目(负责|联系)|(项目)?经办)人)|采购方代表")
 	ContactInfoMustReg  = regexp.MustCompile("^(" + ContactInfoVagueReg.String() + ")$")
 	ContactType         = map[string]*regexp.Regexp{
-		"采购单位": regexp.MustCompile("(采购(项目.{2}|服务)?|比选|询价|发布人?|甲|招标(服务)?|建设|委托|发包|业主|使用|谈判|本招标项目经办|征求意见联系|项目实施)(人|单位|部门|机构|机关|(执行)?方)|(项目|建(库|设))单位|招标人信息|采购中心地址|业主|收料人"),
+		"采购单位": regexp.MustCompile("(采购(项目.{2}|服务)?|比选|询价|发布人?|甲|招标(服务)?|建设|委托|发包|业主|使用|谈判|本招标项目经办|征求意见联系|项目实施)(人|单位|部门|机构|机关|(执行)?方)|(项目|建(库|设))单位|招标人信息|采购中心地址|业主|收料人|采购部"),
 		"代理机构": regexp.MustCompile("(代理|受托).{0,2}(人|方|单位|公司|机构)|招标机构|采购代理"),
 	}
 	ContactBuyerPersonFilterReg = regexp.MustCompile("(管理局)$")
@@ -107,8 +107,9 @@ var (
 	underline                   = regexp.MustCompile("_+$")
 	iswinnertabletag            = regexp.MustCompile("(中标|候选人|成交|结果)")
 	nswinnertabletag            = regexp.MustCompile("[评得分估]+")
+	projectcodeRegAll           = regexp.MustCompile(`采购项目名称及项目编号[:|:]?`)
 	projectcodeReg              = regexp.MustCompile(`((|\(|\[){1}(编号|项目编号|标段编号|招标编号){1}(:|:)(.){4,30}()|\)|\])`)
-	projectcodeReg2             = regexp.MustCompile(`((?:^|\n)编号|项目编号|标段编号){1}(:|:)(.){4,30}[0-9a-zA-Z号]`)
+	projectcodeReg2             = regexp.MustCompile(`((?:^|\n)编号|项目编号|标段编号){1}(:|:)(.){4,30}[0-9a-zA-Z号]`)
 	projectcodeReg3             = regexp.MustCompile("(^询价单编号[A-Za-z0-9/-]*|公告编号[A-Za-z0-9/-]*)")
 	jsonReg                     = regexp.MustCompile(`\{.+:[^}]*\} `) //  \{".*\":\".+\"}
 	regHz                       = regexp.MustCompile("[\u4e00-\u9fa5]")

+ 23 - 9
src/jy/pretreated/colonkv.go

@@ -243,10 +243,13 @@ func formatText(content, key string) string {
 }
 func IsContactKvHandle(value string, m map[string]bool) bool {
 	for k, _ := range m {
-		if k != value && (strings.HasPrefix(k, value) || strings.HasPrefix(value, k)) {
-			continue
-		}
-		if strings.Contains(value, k) || strings.Contains(k, value) {
+		//		if k != value && (strings.HasPrefix(k, value) || strings.HasPrefix(value, k)) {
+		//			continue
+		//		}
+		//		if strings.Contains(value, k) || strings.Contains(k, value) {
+		//			return true
+		//		}
+		if k == value {
 			return true
 		}
 	}
@@ -728,6 +731,16 @@ func GetKvTags(findkvs []*Kv, title string, tagdbs []string) map[string][]*Tag {
 		kvTags[title] = append(kvTags[title], &Tag{title, title, 0, nil, false})
 	}
 	for _, findkv := range findkvs {
+		//		if ContactInfoMustReg.MatchString(findkv.Value) { //名称、地址、联系人、邮编、电话
+		//			preval := findkv.PrevLine
+		//			ctkarr := HasOrderContactType(preval)
+		//			if len(ctkarr) > 0 {
+		//				for i, ct_k := range ctkarr {
+		//					indexMap[i+1] = ct_k
+		//				}
+		//			}
+		//			qutil.Debug("----", indexMap)
+		//		}
 		k, val, nextval := findkv.Key, strings.TrimSpace(findkv.Value), strings.TrimSpace(findkv.NextLine)
 		//val是空的话,不打标签
 		if filterValue.MatchString(val) {
@@ -740,7 +753,7 @@ func GetKvTags(findkvs []*Kv, title string, tagdbs []string) map[string][]*Tag {
 		}
 		key = colonkvEntity.blockTitleKV(title, key)
 		//先用新的key
-		tags := GetAppointTags(key, tagdbs)
+		tags := GetAppointTags(key, tagdbs) //找标签库
 		if len(tags) == 0 && len(key) < 10 && len(title) > 0 && len(title) < 15 {
 			key = title + key
 			tags = GetAppointTags(key, tagdbs)
@@ -766,12 +779,13 @@ func GetKvTags(findkvs []*Kv, title string, tagdbs []string) map[string][]*Tag {
 				} else if nextval != "" && utf8.RuneCountInString(nextval) < 30 {
 					if strings.Contains(nextval, ":") || strings.Contains(nextval, ":") {
 						if len(strings.Split(nextval, ":")) > 1 || len(strings.Split(nextval, ":")) > 1 {
-							nextval = strings.Split(nextval, ":")[0]
-							nextval = strings.Split(nextval, ":")[0]
-							if strings.TrimSpace(nextval) == "" {
+							tmpnextval := ""
+							tmpnextval = strings.Split(nextval, ":")[0]
+							tmpnextval = strings.Split(nextval, ":")[0]
+							if strings.TrimSpace(tmpnextval) == "" {
 								continue
 							}
-							if GetAppointTags(nextval, tagdbs).Len() > 0 || GetAppointTags(k, tagdbs).Len() > 0 {
+							if GetAppointTags(tmpnextval, tagdbs).Len() > 0 || GetAppointTags(k, tagdbs).Len() > 0 {
 								continue
 							}
 						}

+ 67 - 68
src/jy/pretreated/tablev2.go

@@ -218,84 +218,83 @@ func (td *TD) tdHasTable(bsontable *bool, tr *TR) {
 				}
 				stag = str
 			}
-			for _, tv := range tabs {
-				if IsHide(tv) {
-					continue
-				}
-				sonts := NewTableResult(ts.Id, ts.Toptype, stag, td.Html, 2, td.TR.Table.TableResult.RuleBlock)
-				sonts.GoqueryTabs = tv
-				sonts.Analy()
-
-				//sonts := AnalyTableV2(tabs, ts.Toptype, stag, td.Html, 2, ts.Id, table.TableResult.RuleBlock) //又一次调用解析表格入口
-				td.BH = false
-				if td.TR.Table.TableResult == nil {
-					td.TR.Table.TableResult = NewTableResult(sonts.Id, sonts.Toptype, sonts.BlockTag, sonts.Html, sonts.Itype, sonts.RuleBlock)
-				}
-				MergeKvTags(td.TR.Table.TableResult.KvTags, sonts.KvTags)
-				td.SonTableResult = sonts
-				//for _, k := range sonts.SortKV.Keys {
-				//u.Debug(k, sonts.SortKV.Map[k])
-				//				td.TR.Table.StandKV[k] = sonts.SortKV.Map[k].(string)
-				//				td.TR.Table.StandKVWeight[k] = sonts.SortKVWeight[k]
-				//}
-				//增加brand (子表)
-				//fmt.Println("sonsHasKey=============", sonts.HasKey)
-				//fmt.Println("sonsHasGoods========", sonts.HasGoods)
-				//fmt.Println("sonsHasBrand========", sonts.HasBrand)
-				if sonts.HasKey != 0 {
-					td.TR.Table.TableResult.HasKey = sonts.HasKey
-				}
-				if sonts.HasGoods != 0 {
-					td.TR.Table.TableResult.HasGoods = sonts.HasGoods
-				}
-				if sonts.HasBrand != 0 {
-					td.TR.Table.TableResult.HasBrand = sonts.HasBrand
-				}
-				if sonts.BrandData != nil && len(sonts.BrandData) > 0 { //子table
-					for _, v := range sonts.BrandData {
-						if len(v) > 0 {
-							td.TR.Table.TableResult.BrandData = append(td.TR.Table.TableResult.BrandData, v)
-						}
+		}
+		for _, tv := range tabs {
+			if IsHide(tv) {
+				continue
+			}
+			sonts := NewTableResult(ts.Id, ts.Toptype, stag, td.Html, 2, td.TR.Table.TableResult.RuleBlock)
+			sonts.GoqueryTabs = tv
+			sonts.Analy()
+
+			//sonts := AnalyTableV2(tabs, ts.Toptype, stag, td.Html, 2, ts.Id, table.TableResult.RuleBlock) //又一次调用解析表格入口
+			td.BH = false
+			if td.TR.Table.TableResult == nil {
+				td.TR.Table.TableResult = NewTableResult(sonts.Id, sonts.Toptype, sonts.BlockTag, sonts.Html, sonts.Itype, sonts.RuleBlock)
+			}
+			MergeKvTags(td.TR.Table.TableResult.KvTags, sonts.KvTags)
+			td.SonTableResult = sonts
+			//for _, k := range sonts.SortKV.Keys {
+			//u.Debug(k, sonts.SortKV.Map[k])
+			//				td.TR.Table.StandKV[k] = sonts.SortKV.Map[k].(string)
+			//				td.TR.Table.StandKVWeight[k] = sonts.SortKVWeight[k]
+			//}
+			//增加brand (子表)
+			//fmt.Println("sonsHasKey=============", sonts.HasKey)
+			//fmt.Println("sonsHasGoods========", sonts.HasGoods)
+			//fmt.Println("sonsHasBrand========", sonts.HasBrand)
+			if sonts.HasKey != 0 {
+				td.TR.Table.TableResult.HasKey = sonts.HasKey
+			}
+			if sonts.HasGoods != 0 {
+				td.TR.Table.TableResult.HasGoods = sonts.HasGoods
+			}
+			if sonts.HasBrand != 0 {
+				td.TR.Table.TableResult.HasBrand = sonts.HasBrand
+			}
+			if sonts.BrandData != nil && len(sonts.BrandData) > 0 { //子table
+				for _, v := range sonts.BrandData {
+					if len(v) > 0 {
+						td.TR.Table.TableResult.BrandData = append(td.TR.Table.TableResult.BrandData, v)
 					}
 				}
-				if sonts.WinnerOrder != nil && len(sonts.WinnerOrder) > 0 {
-					td.TR.Table.TableResult.WinnerOrder = sonts.WinnerOrder
-				}
-				if sonts.IsMultiPackage {
-					td.TR.Table.BPackage = true
-					tb1 := td.TR.Table.BlockPackage
-					for k, v := range sonts.PackageMap.Map {
-						v1 := v.(*u.BlockPackage)
-						if tb1.Map[k] == nil {
-							tb1.AddKey(k, v)
-						} else {
-							bp := tb1.Map[k].(*u.BlockPackage)
-							if bp != nil && v1.TableKV != nil {
-								for k2, v2 := range v1.TableKV.KvTags {
-									if bp.TableKV == nil {
-										bp.TableKV = u.NewJobKv()
-									}
-									isExists := false
-									for _, v2v := range v2 {
-										for _, v2vv := range bp.TableKV.KvTags[k2] {
-											if v2v.Value == v2vv.Value {
-												isExists = true
-												break
-											}
-										}
-										if !isExists {
-											bp.TableKV.KvTags[k2] = append(bp.TableKV.KvTags[k2], v2v)
-											bp.Text += fmt.Sprintf("%v:%v\n", k2, v2)
+			}
+			if sonts.WinnerOrder != nil && len(sonts.WinnerOrder) > 0 {
+				td.TR.Table.TableResult.WinnerOrder = sonts.WinnerOrder
+			}
+			if sonts.IsMultiPackage {
+				td.TR.Table.BPackage = true
+				tb1 := td.TR.Table.BlockPackage
+				for k, v := range sonts.PackageMap.Map {
+					v1 := v.(*u.BlockPackage)
+					if tb1.Map[k] == nil {
+						tb1.AddKey(k, v)
+					} else {
+						bp := tb1.Map[k].(*u.BlockPackage)
+						if bp != nil && v1.TableKV != nil {
+							for k2, v2 := range v1.TableKV.KvTags {
+								if bp.TableKV == nil {
+									bp.TableKV = u.NewJobKv()
+								}
+								isExists := false
+								for _, v2v := range v2 {
+									for _, v2vv := range bp.TableKV.KvTags[k2] {
+										if v2v.Value == v2vv.Value {
+											isExists = true
+											break
 										}
 									}
+									if !isExists {
+										bp.TableKV.KvTags[k2] = append(bp.TableKV.KvTags[k2], v2v)
+										bp.Text += fmt.Sprintf("%v:%v\n", k2, v2)
+									}
 								}
 							}
 						}
 					}
-					//u.Debug(fmt.Sprintf("%v", td.TR.Table.BlockPackage.Map["1"]))
 				}
+				//u.Debug(fmt.Sprintf("%v", td.TR.Table.BlockPackage.Map["1"]))
 			}
-
 		}
 	}
 }

+ 12 - 5
src/main_test.go

@@ -40,11 +40,18 @@ func Test_extractcity(t *testing.T) {
 	extract.FindBuyer()
 }
 func Test_reg(t *testing.T) {
-	context := `sfsa发斯蒂芬.`
-	//reg := regexp.MustCompile(`(勘察|设计|设备|项目|标段|工程|监理|范围|分包|月|日|天|[,,\.。、::“”‘’"])`)
-	reg := regexp.MustCompile(`[\\p{Han}]`)
-	tmp := reg.MatchString(context)
-	log.Println("--", tmp)
+	value := `名字1名字斯蒂fasd`
+	separateSymbol, _ := regexp.Compile("[\\s\u3000\u2003\u00a0\\n、.,,.。、]")
+	tmp := []string{}
+	if len([]rune(value)) > 4 { //名字默认最长4
+		valuearr := separateSymbol.Split(value, -1)
+		for _, v := range valuearr {
+			if len([]rune(v)) < 4 { //长度大于4认为不是名字
+				tmp = append(tmp, v)
+			}
+		}
+	}
+	log.Println(strings.Join(tmp, ","))
 }
 
 func Test_reg1(t *testing.T) {

+ 14 - 19
src/res/fieldscore.json

@@ -122,14 +122,14 @@
         "positivewords": [
             {
                 "describe": "以*结尾",
-                "regstr": ".{2,100}(委员会|办公室|幼儿园|动物园|管理站|图书馆|殡仪馆|博物馆|基地|青年宫|少年宫|艺术宫|电视台|中心|协会|政府|初中|集团|银行|[大中小]学|部||局|厂|店|所|队|社|室|厅|段|会|场)$",
+                "regstr": ".{2,100}(委员会|办公室|学校|幼儿园|动物园|管理站|图书馆|殡仪馆|博物馆|基地|青年宫|少年宫|艺术宫|电视台|协会|政府|初中|集团|银行|[大中小]学|院|厂|店|所|队|社|室|厅|段|会|场)$",
                 "score": 3
             }
         ],
         "negativewords": [
             {
                 "describe": "包含负分",
-                "regstr": "(附件|委托|代理|咨询|管理有限公司|管理顾问|招标失败|采购中心|交易中心|不足|公告|变更|招标|废标|废止|流标|中标|评标|开标|供应商|金额|万元|元整|预算|报价|单价|第(\\d|一|二|三|四|五)(名|包)|排名|候选|确定|标段|(标|一|二|三|四|五)包|中选|成交|包号|(A|B|C|D|E|F|G)包|地址|详情|要求|推荐|名称|评审|得分|合同|平方米|公示期|结果|备注|说明|单位|代表|委托|工作日|营业(执|期)|通过|代码|电话|联系|条件|合理|费率|以上|以下|拟定|为|注:|\\d[\\s]{0,10}(\\.|元|包|米|平米|平方米|吨|辆|千克|克|毫克|毫升|公升|套|件|瓶|箱|只|台|年|月|日|天|号)|(:|:|;|;|?|¥|\\*|%)|^[a-zA-Z0-9-]{5,100}|^[a-zA-Z0-9-]{1,100}$|[a-zA-Z0-9-]{10,100})",
+                "regstr": "(附件|委托|代理|咨询|管理有限公司|管理顾问|招标失败|交易中心|不足|公告|变更|招标|废标|废止|流标|中标|评标|开标|供应商|金额|万元|元整|预算|报价|单价|第(\\d|一|二|三|四|五)(名|包)|排名|候选|确定|标段|(标|一|二|三|四|五)包|中选|成交|包号|(A|B|C|D|E|F|G)包|地址|详情|要求|推荐|名称|评审|得分|合同|平方米|公示期|结果|备注|说明|单位|代表|委托|工作日|营业(执|期)|通过|代码|电话|联系|条件|合理|费率|以上|以下|拟定|为|注:|\\d[\\s]{0,10}(\\.|元|包|米|平米|平方米|吨|辆|千克|克|毫克|毫升|公升|套|件|瓶|箱|只|台|年|月|日|天|号)|(:|:|;|;|?|¥|\\*|%)|^[a-zA-Z0-9-]{5,100}|^[a-zA-Z0-9-]{1,100}$|[a-zA-Z0-9-]{10,100})",
                 "score": -5
             }
         ],
@@ -261,7 +261,13 @@
                 "score": 3
             }
         ],
-        "negativewords": [],
+        "negativewords": [
+            {
+                "describe": "出现符号",
+                "regstr": "[*]",
+                "score": -10
+            }
+        ],
         "length": [
             {
                 "describe": "[gt,lte,score]",
@@ -270,22 +276,6 @@
                     1,
                     -5
                 ]
-            },
-            {
-                "describe": "[gt,lte,score]",
-                "range": [
-                    1,
-                    7,
-                    3
-                ]
-            },
-            {
-                "describe": "[gt,∞,score]",
-                "range": [
-                    7,
-                    -1,
-                    -1
-                ]
             }
         ]
     },
@@ -375,6 +365,11 @@
                 "describe": "标段编号匹配-2",
                 "regstr": "/.{2}",
                 "score": -2
+            },
+            {
+                "describe": "-结束没有抽取完",
+                "regstr": "-$",
+                "score": -1
             }
         ],
         "length": [

+ 2 - 1
src/res/specialsymbols.json

@@ -92,7 +92,8 @@
             ",",
             "。",
             ";",
-            ";"
+            ";",
+			"、"
         ]
     },
     "messycode": {

+ 1 - 1
src/web/templates/admin/clear.html

@@ -102,7 +102,7 @@ menuActive("version")
 var field = {{.field}};
 var _id = "";
 //var clearArr = ["cutspace","cutallspace","cutSymbol","cutNotPrs","clearAllWord","clearMaxAmount","clearProjectName","toint","tofloat","totimestamp","tomoney","getcurrency","getrate","getPhone","rateToFloat"]; 
-var clearMap = {"中文符号转英文":"chiToEng","去除首尾空格":"cutspace","去除所有空格":"cutallspace","清理符号":"cutSymbol","清理不成对符号后面的内容":"cutNotPrs","清理全部是汉字或者特殊符号的情况":"clearAllWord","过滤大于1万亿":"clearMaxAmount","清理项目名称":"clearProjectName","转int":"toint","转float":"tofloat","转时间戳":"totimestamp","转换金额":"tomoney","获取币种":"getcurrency","获取汇率":"getrate","取手机号":"getPhone","费率转小数":"rateToFloat"}
+var clearMap = {"中文符号转英文":"chiToEng","去除首尾空格":"cutspace","去除所有空格":"cutallspace","清理符号":"cutSymbol","清理不成对符号后面的内容":"cutNotPrs","清理全部是汉字或者特殊符号的情况":"clearAllWord","过滤大于1万亿":"clearMaxAmount","清理项目名称":"clearProjectName","转int":"toint","转float":"tofloat","转时间戳":"totimestamp","转换金额":"tomoney","获取币种":"getcurrency","获取汇率":"getrate","取手机号":"getPhone","费率转小数":"rateToFloat","处理较长采购联系人":"clearBuyerPerson"}
 $(function () {
 	ttableclear=$('#clearTable').DataTable({
 		"lengthChange": false,