根据一个bug,总结js常用截取、替换字符方法

310 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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);