使用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 相关文章推荐
firefox插件Firebug的使用教程
Jan 02 Javascript
jquery Mobile入门—多页面切换示例学习
Jan 08 Javascript
解决jquery插件冲突的问题
Jan 23 Javascript
js弹出确认是否删除对话框
Mar 27 Javascript
js鼠标滑过图片震动特效的方法
Feb 17 Javascript
javascript如何写热点图
Dec 08 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
Dec 21 Javascript
canvas实现流星雨的背景效果
Jan 13 Javascript
详解vue 配合vue-resource调用接口获取数据
Jun 22 Javascript
详解vue-cli与webpack结合如何处理静态资源
Sep 19 Javascript
vue的状态管理模式vuex
Nov 30 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
Dec 14 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
QueryPath PHP 中的jQuery
2010/04/11 PHP
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
php按字符无乱码截取中文的方法
2015/03/27 PHP
php判断访问IP的方法
2015/06/19 PHP
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
jquery异步请求实例代码
2011/06/21 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
Vue.js每天必学之构造器与生命周期
2016/09/05 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
2017/03/02 Javascript
vue.js的提示组件
2017/03/02 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
Angular.JS读取数据库数据调用完整实例
2019/07/02 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
Python实现把xml或xsl转换为html格式
2015/04/08 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
python邮件发送smtplib使用详解
2020/06/16 Python
Python线程同步的实现代码
2018/10/03 Python
CSS3 text-shadow实现文字阴影效果
2016/02/24 HTML / CSS
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
校园活动策划书范文
2014/01/10 职场文书
逃课上网检讨书
2014/02/20 职场文书
法人委托书范本
2014/04/04 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
动物科学专业求职信
2014/07/27 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
十岁生日答谢词
2015/01/05 职场文书
培训师岗位职责
2015/02/14 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
CSS3鼠标悬浮过渡缩放效果
2021/04/17 HTML / CSS
muduo TcpServer模块源码分析
2022/04/26 Redis