1

所以我想用 _T(...) 将我们的 C++ 源代码中的所有字符串文字包围起来,用于我们的 unicode 端口。

这个问题回答了我如何搜索字符串文字,但是有没有办法用 _T() 包围匹配的文本而不是用其他东西替换?

无论如何,我打算一次只做一个字符串,而不是一次全部做,但希望避免自己输入或使用 Visual Assist 中的“Surround With”来处理每个字符串。

4

2 回答 2

2

Jochen Kalmbach 的答案可能适用于旧版本的 Visual Studio,但它不适用于我在 Visual Studio 2013 中。但是,查找/替换输入框右侧的小 RegEx 快捷按钮有很大帮助:

RegEx 快捷按钮对非 RegEx 专家很有帮助

在 Find 中,选择 ":q Quoted string" 选项。在替换中,选择“$1 替换与捕获的组号 1 匹配的子字符串”,然后用 _T() 将 $1 括起来。

最终输出

查找: ((\".+?\")|('.+?'))

替换:_T($1)

请注意,$1 表示包含在最外圆括号中的 RegEx 表达式组。

这是另一个例子:

要求

寻找:

Converter.toCustomObject($find("Anything"));

替换(不同的 Converter 方法并在 $find() 参数后添加参数):

Converter.toDifferentObject($find("Anything"), true);

解决方案

查找(在查找选项中使用 RegEx):

Converter\.toCustomObject\((\$find\(.*)\);

代替:

Converter.toDifferentObject($1, true);

请注意,替换值不需要转义特殊字符,尽管您可以应用一些正则表达式,例如在输出后添加换行符,您可以将其用于替换:

Converter.toDifferentObject($1, true);\r\n
于 2014-10-28T18:05:28.897 回答
0

转到:编辑|查找和替换...|快速替换..然后输入:

Find: :q
Replace with : _T(\0)
Use: Regular Expressions
于 2013-07-11T11:18:38.343 回答