如何替换javascript项目中的所有符号名称

时间:2013-01-04 17:16:01

标签: javascript parsing

我想写一些会自动(使用规则系统和用作替换的单词列表)的东西应该用其他东西替换所有变量和函数名称:

例如:

var foot = 0;
function cat(state) {
    return state ? "running" : "sleep";
}
cat(foot);

要:

var house = 0;
function bear(country) {
    return country ? "running" : "sleep";
}
bear(house);

我在网上搜索过但没有找到任何可以轻易修改的项目来执行此操作。

你们中的任何人都知道如何做到这一点或知道我可以用作起点的项目吗?

3 个答案:

答案 0 :(得分:1)

您正在寻找Obfuscator或您喜欢做什么吗?

How can I obfuscate (protect) JavaScript?

答案 1 :(得分:0)

您可以编写一个简短的Shell脚本(例如bash)。您需要sedfor循环以及包含单词列表的三个变量。如果您的第一个代码包含脚和猫以及状态在名为my_first_code.txt的文件中,那么它将如下所示:

foot_words="house ba be bi bo bu"
cat_words="bear da de di do du"
state_words="country ka ke ki ko ku"

count=1
for word in $foot_words; do
    sed 's%foot%'$word'%g' my_first_code.txt > new_code_$count.txt
    ((count++))
done
count=1
for word in $cat_words; do
    sed -i 's%cat%'$word'%g' new_code_$count.txt
    ((count++))
done
count=1
for word in $state_words; do
    sed -i 's%state%'$word'%g' new_code_$count.txt
    ((count++))
done

在此示例中,您将获得6个新文件new_code_1.txtnew_code_2.txtnew_code_3.txt等等。

说明:第一个for循环复制my_first_code.txt中的代码,并用新单词替换单词 foot 。另外两个for循环只替换新文件中的单词。

答案 2 :(得分:0)

Google Closure编译器(https://developers.google.com/closure/compiler/)能够识别函数和变量名称,但没有内置选项可以用您选择的名称替换它们。

因为直接查找和替换没有上下文,如果你想滚动你自己,你需要使用正则表达式“解析”JavaScript,如果你使用递归正则表达式,这很难但可管理在.NET中使用平衡组

http://msdn.microsoft.com/en-us/library/bs2twtah.aspx

get inner patterns recursively using regex c#