持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
前言
这两天在工作中遇到一个bug,根据选择的省、市,获取后台相应地区的汽车经销商,但是后台填写的汽车经销商的省、市与选择器的省、市存在差异,比如后台填写的广西地区,省填写的为广西省,而选择器中省是广西壮族自治区,如此在前端页面选择了该省,就无法与后台的数据相匹配,因此无法获取到相应数据。这种常规做法不清楚是不是需要后端调整为模糊匹配,还是前端做一个模糊匹配。
反正感觉这个功能本来就做的挺没水平的,就想办法自己解决了。主要是通过js根据特定字符改变原本选择器自带的省、市,做到与后台填写的相匹配。
常见截取字符方法
substring() 提取字符串中介于两个指定下标之间的字符
语法:
string.substring(start, stop)
string 为提取子字符串的字符串或String对象
参数说明:
- start(必需):一个非负的整数,指明子字符串的起始位置。
- stop(可选):一个非负的整数,指明子字符串的结束位置,如果省略,表示截取到结尾的所有字符串
返回值说明:
该方法返回一个新的字符串,该字符串值包含start位置,但是不包括stop位置的所有字符,其长度为 stop 减 start。
注意事项:
如果 start 与 stop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。
如果 start 或 stop 为负数,那么它将被替换为 0。
如果只用一个参数并且为0的话,那么返回整个字符串
在这个bug中如果是直辖市的话,选择器的市划分为该市的市区和郊区,因此需要根据特定的字符‘市’截取第一个字符到市的子字符
// 获取选择的城市名
var city = $("#ecityName").val();
// 根据indexOf方法得到市在城市名字符串的索引
var index = city.indexOf("市");
city = city.substring(0, index+1);
slice() 提取字符串的某个部分,并以新的字符串返回被提取的部分
string.slice(start, stop)
参数说明:
- start(必需):规定从何处开始选取。如果是负数,那么它规定从字符串尾部开始算起的位置。也就是说,-1 指最后一个字符,-2 指倒数第二个字符,以此类推。
- stop(可选):规定从何处结束选取,即结束处的字符下标。如果没有指定该参数,那么截取的字符串包含从 start 到结束的所有字符。如果这个参数是负数,那么它规定的是从数组尾部开始算起的字符。
返回值同substring() 方法一致
常见替换字符方法
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
var province = $("#eprovinceName").val();
// 多个不同字符替换相同的一个字符
province = province.replace(/(壮族自治区)|(回族自治区)/,"省");
console.log(province);