使用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 相关文章推荐
基于jquery实现的类似百度搜索的输入框自动完成功能
Aug 23 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
Apr 15 Javascript
jQuery获取动态生成的元素示例
Jun 15 Javascript
Json实现异步请求提交评论无需跳转其他页面
Oct 11 Javascript
JavaScript监听和禁用浏览器回车事件实例
Jan 31 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
Jun 23 Javascript
Bootstrap登陆注册页面开发教程
Jul 12 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
Feb 08 Javascript
JS简单获取当前日期和农历日期的方法
Apr 17 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
Nov 15 Javascript
弱类型语言javascript中 a,b 的运算实例小结
Aug 07 Javascript
vue如何使用rem适配
Feb 06 Vue.js
使用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
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
JavaScript 事件参考手册
2008/12/24 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
jQuery webuploader分片上传大文件
2016/11/07 Javascript
理顺8个版本vue的区别(小结)
2018/09/17 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
详解ES6数组方法find()、findIndex()的总结
2020/05/12 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
2020/07/22 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
Python简单实现Base64编码和解码的方法
2017/04/29 Python
Python实现螺旋矩阵的填充算法示例
2017/12/28 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
Python实现自动打开电脑应用的示例代码
2020/04/17 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
Pycharm连接gitlab实现过程图解
2020/09/01 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
jupyter 添加不同内核的操作
2021/02/06 Python
JoJo Maman Bébé爱尔兰官网:英国最受欢迎的精品母婴品牌
2020/12/20 全球购物
介绍一下如何优化MySql
2016/12/20 面试题
群众路线教育实践活动方案
2014/02/02 职场文书
代领学位证书毕业证书委托书
2014/09/30 职场文书
python基于OpenCV模板匹配识别图片中的数字
2021/03/31 Python
CSS 伪元素::marker详解
2021/06/26 HTML / CSS
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android
Golang实现可重入锁的示例代码
2022/05/25 Golang