使用JS中的Replace()方法遇到的问题小结


Posted in Javascript onOctober 20, 2017

今天在写pc客户端自动化打包脚本的时候遇到遇到了几个问题,虽然是小问题,但是也卡了一段时间,所以决定记录一下。

js的replace()方法是用于替换某些内容,它可以接收两个参数,第一个是一个被替换的正则表达式对象或者一个字符串,第二个可以是将要替换成的内容或者函数,将要替换成的内容须是一个字符串。我在执行的时候遇到的报错是:Cannot read property ‘replace' of undefined。具体代码如下:

var fs=require("fs")
var infoPlistFile = osxFolder + '/Contents/Info.plist';
var infoPlist = fs.readFile(infoPlistFile);
fs.writeFile(infoPlistFile, infoPlist.replace(/Pexip Infinity Connect/gm, $scope.manifest.name));

当执行这段代码的时候得到的报错是无法获取未定义的属性replace,开始不知道问题出在哪里,然后试着打印出被替换的文件infoPlist,发现是null,然后就知道是定义infoPlist那里出现问题,修改成fs.readFileSync之后发现就没有这个报错了,但是又有一个新的报错:replace is not a function

查找了一下相关资料,说明对应的变量不是字符串,而是其他的类型,所以我打印了一下infoPlist的类型,打印出来的是object,所以问题是出在这里,因为infoPlist的类型不对,所以导致了报错,于是增加了处理成字符串的操作,于是就可以了

var infoPlistFile = osxFolder + '/Contents/Info.plist';
var infoPlist = readFile(infoPlistFile).toString();
writeFile(infoPlistFile, infoPlist.replace(/Pexip Infinity Connect/gm, $scope.manifest.name));

另外我在自己写demo做测试的时候还发现,如果没有一个变量来接收的话,replace()方法是不起作用的,如:

var str="Hello World";
str.replace(/World/g, "dxy");
console.log(str);

这个时候打印出来的str还是”Hello World”,是没有替换的,这里应该用一个变量来作为接收,替换原来的变量,如:

var str="Hello World";
var a=str.replace(/World/g, "dxy");
console.log(a);

这个时候打印的结果就是”Hello dxy”。

总结:这次在使用replace()方法的时候让我注意到以下几个问题:

1、在使用replace()方法的时候首先要确保不能在null或undefined类型的变量上调用。我们可以给它增加一个判断,如果变量有值的时候才调用方法。

2、执行replace()方法的时候的变量不仅是要有值,还必须是字符串类型的。

3、js不是自动赋值的,执行一个方法,要么是在方法里直接执行,要么是返回结果,返回结果的时候需要通过一个变量去接收。

4、如果第一个参数传的是一个正则表达式的话,是不能加引号的。

以上所述是小编给大家介绍的使用JS中的Replace()方法遇到的问题小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
prototype 源码中文说明之 prototype.js
Sep 22 Javascript
javascript 获取表单file全路径
Dec 31 Javascript
javascript三元运算符用法实例
Apr 16 Javascript
跟我学习javascript的prototype原型和原型链
Nov 18 Javascript
JS对象的深度克隆方法示例
Mar 16 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
Nov 30 Javascript
Angular2+如何去除url中的#号详解
Dec 20 Javascript
Vue2.0系列之过滤器的使用
Mar 01 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
Sep 29 Javascript
vue微信分享的实现(在当前页面分享其他页面)
Apr 16 Javascript
微信小程序实现圆形进度条动画
Nov 18 Javascript
小程序实现分类页
Jul 12 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
Oct 20 #Javascript
2种简单的js倒计时方式
Oct 20 #Javascript
pm2 部署 node的三种方法示例
Oct 20 #Javascript
vue.js实例对象+组件树的详细介绍
Oct 20 #Javascript
dropload.js插件下拉刷新和上拉加载使用详解
Oct 20 #Javascript
JavaScript html5 canvas实现图片上画超链接
Oct 20 #Javascript
Validform验证时可以为空否则按照指定格式验证
Oct 20 #Javascript
You might like
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
php使用百度天气接口示例
2014/04/22 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
基于JavaScript 类的使用详解
2013/05/07 Javascript
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
2016/11/10 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
微信小程序如何获取地址
2019/12/24 Javascript
vue远程加载sfc组件思路详解
2019/12/25 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
python requests证书问题解决
2019/09/05 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
英国最大的海报商店:GB Posters
2018/03/20 全球购物
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
string = null 和string = ''的区别
2013/04/28 面试题
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
电子装配专业毕业生求职信
2014/04/23 职场文书
科技之星事迹材料
2014/06/02 职场文书
汽车车尾标语大全
2015/08/11 职场文书