使⽤JS中的Replace()⽅法遇到的问题⼩结
今天在写pc客户端⾃动化打包脚本的时候遇到遇到了⼏个问题,虽然是⼩问题,但是也卡了⼀段时间,所以决定记录⼀下。js的replace()⽅法是⽤于替换某些内容,它可以接收两个参数,第⼀个是⼀个被替换的正则表达式对象或者⼀个字符串,第⼆个可以是将要替换成的内容或者函数,将要替换成的内容须是⼀个字符串。我在执⾏的时候遇到的报错是:Cannot read property ‘replace' of undefined。具体代码如下:
var fs=require("fs")
js 正则替换var infoPlistFile = osxFolder + '/Contents/Info.plist';
var infoPlist = fs.readFile(infoPlistFile);
fs.writeFile(infoPlistFile, place(/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, place(/Pexip Infinity Connect/gm, $scope.manifest.name));
另外我在⾃⼰写demo做测试的时候还发现,如果没有⼀个变量来接收的话,replace()⽅法是不起作⽤的,如:
var str="Hello World";
console.log(str);
这个时候打印出来的str还是”Hello World”,是没有替换的,这⾥应该⽤⼀个变量来作为接收,替换原来的变量,如:
var str="Hello World";
var place(/World/g, "dxy");
console.log(a);
这个时候打印的结果就是”Hello dxy”。
总结:这次在使⽤replace()⽅法的时候让我注意到以下⼏个问题:
1、在使⽤replace()⽅法的时候⾸先要确保不能在null或undefined类型的变量上调⽤。我们可以给它增加⼀个判断,如果变量有值的时候才调⽤⽅法。
2、执⾏replace()⽅法的时候的变量不仅是要有值,还必须是字符串类型的。
3、js不是⾃动赋值的,执⾏⼀个⽅法,要么是在⽅法⾥直接执⾏,要么是返回结果,返回结果的时候需要通过⼀个变量去接收。
4、如果第⼀个参数传的是⼀个正则表达式的话,是不能加引号的。
以上所述是⼩编给⼤家介绍的使⽤JS中的Replace()⽅法遇到的问题⼩结,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。