使用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 相关文章推荐
JS 无法通过W3C验证的处理方法
Mar 09 Javascript
简短几句 通俗解释javascript的闭包
Jan 17 Javascript
jQuery function的正确书写方法
Aug 02 Javascript
seajs中模块的解析规则详解和模块使用总结
Mar 12 Javascript
javascript运动详解
Jul 06 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
Aug 29 Javascript
Angular的自定义指令以及实例
Dec 26 Javascript
AngularJS表格样式简单设置方法示例
Mar 03 Javascript
总结js中的一些兼容性易错的问题
Dec 18 Javascript
Angular2实现的秒表及改良版示例
May 10 Javascript
详解Vue-Router源码分析路由实现原理
May 15 Javascript
Vue.js组件使用props传递数据的方法
Oct 19 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
一个图片地址分解程序(用于PHP小偷程序)
2014/08/23 PHP
javascript prototype原型操作笔记
2009/12/07 Javascript
Javasipt:操作radio标签详解
2013/12/30 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
2015/03/04 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
vue-cli3+typescript初体验小结
2019/02/28 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
python设置检查点简单实现代码
2014/07/01 Python
Python操作Excel之xlsx文件
2017/03/24 Python
Python中异常重试的解决方案详解
2017/05/05 Python
python编写Logistic逻辑回归
2020/12/30 Python
Python for循环及基础用法详解
2019/11/08 Python
python随机数分布random均匀分布实例
2019/11/27 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
Trunki英国官网:儿童坐骑式行李箱
2017/05/30 全球购物
印度在线杂货店:bigbasket
2018/08/23 全球购物
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
美国精品地毯网站:Boutique Rugs
2020/03/04 全球购物
学校关爱留守儿童活动方案
2014/08/27 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
2019年教师入党申请书
2019/06/27 职场文书
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python