使用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类的封装及实现代码
Dec 02 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
Oct 20 Javascript
深入理解javascript动态插入技术
Nov 12 Javascript
Json解析的方法小结
Jun 22 Javascript
Node.js中使用jQuery的做法
Aug 17 Javascript
javascript函数的四种调用模式
Jan 08 Javascript
用Webpack构建Vue项目的实践
Nov 07 Javascript
详解Vue 全局引入bass.scss 处理方案
Mar 26 Javascript
Webpack中loader打包各种文件的方法实例
Sep 03 Javascript
js将URL网址转为16进制加密与解密函数
Mar 04 Javascript
JavaScript命令模式原理与用法实例详解
Mar 10 Javascript
VUE动态生成word的实现
Jul 26 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类
2008/04/09 PHP
php smarty模版引擎中的缓存应用
2009/12/02 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
php实现单链表的实例代码
2013/03/22 PHP
php object转数组示例
2014/01/15 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
Javascript select下拉框操作常用方法
2009/11/09 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
JavaScript实现横版菜单栏
2020/03/17 Javascript
python 重定向获取真实url的方法
2018/05/11 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
Python线程之定位与销毁的实现
2019/02/17 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
python config文件的读写操作示例
2019/09/27 Python
使用pygame编写Flappy bird小游戏
2020/03/14 Python
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
摩托车和ATV零件、配件和服装的首选在线零售商:MotoSport
2017/12/22 全球购物
九年级家长会邀请函
2014/01/15 职场文书
工程承诺书怎么写
2014/05/24 职场文书
施工工地安全标语
2014/06/07 职场文书
建筑施工安全责任书
2014/07/24 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
2014年减负工作总结
2014/12/10 职场文书
初中教师个人工作总结
2015/02/10 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python