使用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 相关文章推荐
fromCharCode和charCodeAt 方法
Dec 27 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
Apr 02 Javascript
改变javascript函数内部this指针指向的三种方法
Apr 23 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
Mar 04 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
Aug 25 Javascript
基于jQuery实现点击弹出层实例代码
Jan 01 Javascript
js实现上传图片预览方法
Oct 25 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
Jun 29 Javascript
详解Angular5 服务端渲染实战
Jan 04 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
Jan 23 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
Mar 07 jQuery
vue 实现websocket发送消息并实时接收消息
Dec 09 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
超级简单的发送邮件程序
2006/10/09 PHP
PHP集成FCK的函数代码
2008/09/27 PHP
使用PHP进行微信公众平台开发的示例
2015/08/21 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
jQuery常用数据处理方法小结
2015/02/20 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
2017/08/17 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
2018/07/26 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
Python XML RPC服务器端和客户端实例
2014/11/22 Python
Python字符串格式化输出方法分析
2016/04/13 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
eBay澳大利亚站:eBay.com.au
2018/02/02 全球购物
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
优秀英语专业毕业生求职信
2013/11/23 职场文书
渔夫的故事教学反思
2014/02/14 职场文书
文体活动实施方案
2014/03/27 职场文书
主题党日活动总结
2014/07/08 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书