用户键入企业名称(全称)提取关键字(简称)
实现思路:
1、判断用户键入的字符串长度,长度 <=4,则不做处理,直接返回该字符串
2、判断字符串是否以 “xx省” 开头,如果是则删除该部分
3、判断字符串是否以 “xx市” 开头,如果是则删除该部分
4、判断字符串后缀是否以 “xxxx” 结尾,例如“有限公司”,如果是则删除该部分
5、判断字符串中是否存在特殊符号,例如 “(xxxx)”,如果存在则删除该部分
6、考虑“不是常规的”企业名称(以上过滤截取过程均被跳过),或者以上过程截取完之后长度 >4 ,则直接截取字符串前4位
总结一句话:去头去尾,文字太长取前四位
以下↓企业名为例:
深圳市平安科技有限公司
小米科技有限责任公司
上海远丰信息科技(集团)有限公司
软件开发定制工作室
代码实现:
准备工作,全局变量
let province = arr.province // xx省 json数据
let cities = arr.cities // xx市 json数据
let companySuffixes = arr.company_suffixes // xxxx 后缀json数据
公用函数,获取数组集合中最短的字符串
例如:[ ‘深圳市平安科技有限公司’, ‘平安科技’ ],返回值为 “平安科技”
function getStrLenShort(nameList) {
let tempName = ''
if (nameList.length > 0) {
tempName = nameList[0]
let temp = ""
for (let i = 1; i < nameList.length; i++) {
temp = nameList[i]
if (tempName.length > temp.length) {
tempName = temp
}
}
}
return tempName
}
1、判断用户键入的字符串长度,长度 <=4,则不做处理,直接返回该字符串
let length = name.length // name值为以上列举的企业名称
if (length <= 4) {
return name
}
2、判断字符串是否以 “xx省” 开头,如果是则删除该部分
将过滤后的值都添加到 nameList 数组中,通过公用函数 getStrLenShort 获取数组中最短的字符串为过滤结果,后面步骤同理
let nameList = [] // 储存企业名称过滤后的字符串数组集合
for (let i = 0; i < province.length; i++) {
let prefix = province[i]
if (name.startsWith(prefix)) {
// 以 xxxx省 开头
let nameSub = name.substring(prefix.length)
nameList.push(nameSub)
} else {
nameList.push(name)
}
}
name = getStrLenShort(nameList)
3、判断字符串是否以 “xx市” 开头,如果是则删除该部分
let nameList1 = [] // 储存企业名称过滤后的字符串数组集合
for (let i = 0; i < cities.length; i++) {
let prefix = cities[i]
if (name.startsWith(prefix)) {
// 以 xxxx市 开头
let nameSub = name.substring(prefix.length)
nameList1.push(nameSub)
} else {
nameList1.push(name)
}
}
name = getStrLenShort(nameList1)
4、判断字符串后缀是否以 “xxxx” 结尾,例如 “有限公司”,如果是则删除该部分
let nameList2 = [] // 储存企业名称过滤后的字符串数组集合
for (let i = 0; i < companySuffixes.length; i++) {
let suffix = companySuffixes[i]
if (name.endsWith(suffix)) {
// 以 xxxx 结尾
let substring = name.substring(0, name.length - suffix.length)
nameList2.push(substring)
} else {
nameList2.push(name)
}
}
name = getStrLenShort(nameList2)
5、判断字符串中是否存在特殊符号,例如 “(xxxx)”,如果存在则删除该部分
if (name.includes('(')) {
name = name.split('(')[0]
}
6、考虑“不是常规的”企业名称(以上过滤截取过程均被跳过),或者以上过程截取完之后长度 >4 ,则直接截取字符串前4位
if (name.length > 4) {
name = name.substring(0, 4)
}
最终输出结果:
平安
小米
远丰信息
软件开发
如果觉得有用随手点个赞吧,谢谢
关注我,不定时分享技术干货~
提取关键字后可生成 LOGO等操作,需要源码的铁汁 请关注下方公众号,并回复【企业logo】
以上所用到的json文件,关注公众号后回复【简称提取】