在将多行代码从一种语言移植到另一种语言时,我必须将所有数组访问权限从函数调用x.get(y)
的形式替换为方括号符号x[y]
。很少有文本编辑器可以做基于正则表达式的替换。
在“要查找的文本”字段中应键入的内容以及在此情况下应在“替换为”字段中键入的内容? x
和y
都可以有所不同,因此原始代码可以包含以下行:
... state.get(1);
... text.get(i);
... result.get(line);
转换后:
... state[1];
... text[i];
... result[line];
答案 0 :(得分:4)
您可以搜索\.get\((\w+)\)
并替换为[$1]
。
上述模式假设括号之间只有字母数字字符,但还有其他选择:
.*
(不检查“。匹配换行符”)应该匹配到行尾。[^)]*
应匹配不是)
的字符。适用于新线路。在这两种情况下,您可能想要在您的模式中加入;
。
请注意,这种方式非常脆弱 - 您可能会遇到类似state.get(a.get(3 + sin(6)))
的代码,并且可能会得到错误的结果。
答案 1 :(得分:1)
对于Notepad ++,我会写在查找内容:([0-9,a-z,A-Z,-,_]+).get\(([0-9,a-z,A-Z,-,_]+)\)
替换为\1[\2]
输入:
x.get(1);
text.get(i);
result.get(line);
输出:
x[1];
text[i];
result[line];