使用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 相关文章推荐
List the Stored Procedures in a SQL Server database
Jun 20 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
Mar 08 Javascript
jQuery实现简单的列表式导航菜单效果代码
Aug 31 Javascript
基于JavaScript实现移动端TAB触屏切换效果
Oct 20 Javascript
Bootstrap使用基础教程详解
Sep 05 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
Oct 10 Javascript
浅谈JsonObject中的key-value数据解析排序问题
Dec 06 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
Jul 31 Javascript
layui-laydate时间日历控件使用方法详解
Nov 15 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
Nov 19 Javascript
如何获取vue单文件自身源码路径
May 06 Javascript
vue子路由跳转实现tab选项卡
Jul 24 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
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
jQuery DIV弹出效果实现代码
2009/07/03 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
js文件包含的几种方式介绍
2014/09/28 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
纯CSS3代码实现滑动开关效果
2015/08/19 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
Vue.js使用v-show和v-if的注意事项
2016/12/13 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
令按钮悬浮在(手机)页面底部的实现方法
2017/05/02 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
js 两个日期比较相差多少天的实例
2017/10/19 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
python中常用的九种预处理方法分享
2016/09/11 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
Python JSON编解码方式原理详解
2020/01/20 Python
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
新电JAVA笔试题目
2014/08/31 面试题
个人简历中的自我评价范例
2013/10/29 职场文书
主管职责范文
2013/11/09 职场文书
政治表现评语
2014/05/04 职场文书
运动会演讲稿100字
2014/08/25 职场文书
个性与发展自我评价
2015/03/06 职场文书
祝寿主持词
2015/07/02 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书
python开发飞机大战游戏
2021/07/15 Python
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python