如果选择使用regex/backreferences替换,或者使用split/replace
Given the choice of using replace with regex/backreferences or split/replace, which would you choose?
如果我想获取URI查询字符串的相关部分,我可以选择使用这两种方法中的任何一种,这两种都有效。这可能不值得纠结,但如果有选择,你会选择这些方法中的哪一种,为什么?
A)
var PN = this.href.replace(/.*&partNum=(.*)&partName=.*/, '$1');
var PName = this.href.replace(/.*&partName=(.*)&class=.*/, '$1');
B)
var hrefSplit = this.href.split('&');
var PN = hrefSplit[1].replace('partNum=', '');
var PName = hrefSplit[2].replace('partName=', '');
我不认为我会使用它们中的任何一个,它们都过于依赖查询字符串的格式。(想想如果查询字符串在partNum
之前有partName
会发生什么。)这类事情通常是等待发生的维护麻烦。
相反,我会将查询字符串转换为一个映射(为此使用一个集中式函数),然后检索映射的相关部分。
根据参数顺序,两者都是危险的,您应该这样解析:
var num = url.match(/'WpartNum=('w*)/)[1];
var name = url.match(/'WpartName=('w*)/)[1];
或
var pNum = /'WpartNum=('w*)/.exec(url)[1];
var pName = /'WpartName=('w*)/.exec(url)[1];
相关文章:
- str.split(someString).join(someOtherString)是否等效于替换
- 如何删除除冒号、数字和'上午'或者'下午'
- 如何使用split()将1.18.0-AAA-1转换为1.18.0js
- 如何“;过滤器”;或者以其他方式重构该数据
- how to split a string with ','
- 哪个布尔运算更快<或者<=
- 在javascript中使用split函数希望在页面加载时拆分url
- 在编译阶段后创建新的DOM树,或者继续使用原始修改的DOM
- 或者在表单上选择默认选项文本(选择1)
- 试图修改此javascript代码以减小弹出窗口的大小,或者在用户单击框外时关闭
- jQuery字符串使用split()方法在空格后拆分字符串
- 如何使用 num.toString 和 str.split 查找整数的最后一位数字
- JQuery是否有一个“;移动“;作用或者有没有一种更紧凑的方法来做到这一点
- 具有多个条件的Javascript.split()函数
- 如何在javascript中对以下字符串使用string.split()
- 咖啡'@'或者这在函数和类中
- Bootstrap CSS和JS我必须将它们包含在单独的文件中,或者可以编译它们
- 计时器在使用 jQuery 一分钟后没有触发,或者每 1 分钟后给出一些其他解决方案来触发功能
- 使用CloudFront和AmazonS3,或者其他CDN,我可以将所有类似的请求发送到一个静态文件中
- 如果选择使用regex/backreferences替换,或者使用split/replace