JS中的Replace()方法遇到的问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JS中的Replace()方法遇到的问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2395字,纯文字阅读大概需要4分钟。
内容图文
![JS中的Replace()方法遇到的问题](/upload/InfoBanner/zyjiaocheng/297/6237f26d7acd4a6eaafcdc084b32d008.jpg)
今天在写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、如果第一个参数传的是一个正则表达式的话,是不能加引号的。
相关推荐:
Javascript中replace()方法的使用实例
ECSHOP中Deprecated: preg_replace()报错的解决办法
php字符串替换str_replace()函数的使用方法介绍
以上就是JS中的Replace()方法遇到的问题的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的JS中的Replace()方法遇到的问题全部内容,希望文章能够帮你解决JS中的Replace()方法遇到的问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。