使用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 相关文章推荐
DOM 脚本编程中的兄弟节点
Oct 31 Javascript
jQuery的deferred对象详解
Nov 12 Javascript
jquery实现的仿天猫侧导航tab切换效果
Aug 24 Javascript
当jquery ajax遇上401请求的解决方法
May 19 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
Jun 06 Javascript
AngularJS  $on、$emit和$broadcast的使用
Sep 05 Javascript
微信公众号支付H5调用支付解析
Nov 04 Javascript
AngularJS封装指令方法详解
Dec 12 Javascript
vue分类筛选filter方法简单实例
Mar 30 Javascript
Javascript实现跨域后台设置拦截的方法详解
Aug 04 Javascript
使用Vue 实现滑动验证码功能
Jun 27 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
Sep 21 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/09/30 PHP
基于empty函数的输出详解
2013/06/17 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
JavaScript 密码强度判断代码
2009/09/05 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
JS实现自动定时切换的简洁网页选项卡效果
2015/10/13 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
JavaScript中import用法总结
2019/01/20 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
python将文本转换成图片输出的方法
2015/04/28 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
python用for循环求和的方法总结
2019/07/08 Python
python爬虫添加请求头代码实例
2019/12/28 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
Python实现AI换脸功能
2020/04/10 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
Lookfantastic法国官网:英国知名美妆购物网站
2017/10/28 全球购物
阿拉伯书店:Jamalon
2019/07/24 全球购物
学雷锋演讲稿
2014/03/04 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
PHP使用QR Code生成二维码实例
2021/07/07 PHP