1

在将多行代码从一种语言移植到另一种语言时,我必须将所有数组访问从函数调用的形式替换x.get(y)为方括号表示法x[y]。周围很少有文本编辑器可以进行基于正则表达式的替换

在这种情况下,应该在“要查找的文本”字段中输入什么以及在“替换为”字段中应该输入什么?两者xy都可以变化,所以原始代码可以有如下几行:

... state.get(1);
... text.get(i);
... result.get(line);

转换后:

... state[1];
... text[i];
... result[line];
4

2 回答 2

4

您可以搜索\.get\((\w+)\)并替换为[$1].

上面的模式假设括号之间只有字母数字字符,但还有其他选择:

  • .*(不检查“.matched newline”)应该匹配到行尾。
  • [^)]*应该匹配不是). 将适用于新线路。

在这两种情况下,您可能都希望将 包含;在您的模式中。

请注意,这两种方式都非常脆弱 - 您可能会遇到类似 的代码state.get(a.get(3 + sin(6))),并且可能会得到不正确的结果。

于 2013-10-02T05:20:16.673 回答
1

对于 Notepad++,我会在 Find what 中写:([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];

在此处输入图像描述

于 2013-10-02T05:17:08.837 回答