替换js字符串常量为变量

发布时间:2019-07-15编辑:脚本学堂
如何替换js字符串常量为变量,本文分享一个例子,学习下js字符串常量的操作方法。

把整站js中的域名替成变量,linuxjishu/13830.html target=_blank class=infotextkey>awk测试无果。
于是还是用python,没有用正则,但是好像跑起来真的比awk快。

效果:
 

复制代码 代码示例:
//替换之前
var s = '<a href="http://blog.abc.com/show">';
//替换之后
var s = '<a href="http://blog.' + siteDomain + '/show">';

使用方法:
首要,修改脚本里要替换的关键词
config['keyword'] = 'abc.com'
config['vname'] = 'siteDomain'
然后:
python replace_keyword.py ./myscript.js > /tmp/ooxx
mv /tmp/ooxx ./myscript.js

批量替换写成如下的shell/ target=_blank class=infotextkey>shell脚本:replace_keyword.sh
 

复制代码 代码示例:
#!/bin/sh
python replace_keyword.py $1 > /tmp/ooxx
mv /tmp/ooxx $1
 

批量替换整个目录
 

复制代码 代码示例:
find ./ -name "*.js" | xargs -i sh replace_keyword.sh {}
 

最后任务远没有结束,这个脚本还不够强大,它只会替换字符串中的关键字,作为对象属性名称的字符串不会替换,正则中的关键字无法替换,像下面:
 

复制代码 代码示例:

var config = {
    'blog.abc.com' : 1,
    'game.abc.com' : 2
}
//需要手工替换为
var config = {};
config['blog' + siteDomain] = 1;
config['game' + siteDomain] = 2;
 
if ( /abc.com/.test(str) ){}
//需要手工替换为
if ( new RegExp( siteDomain.replace('.','.') ).test(str) ){}
所以运行完脚本之后还需要检查未替换的地方,手工完成

find ./ -name "*.js" | xargs grep 'abc?.com'

未结束的字符串常量怎么解决
js未结束的字符串常量异常解决方法
未结束的字符串常量和转义符用法
JS报未结束字符串常量错误怎么解决
js 未结束的字符串常量错误怎么解决
js 未结束的字符串常量解决方法
如何在JavaScript中嵌入大量字符串常量