所以我想用 _T(...) 将我们的 C++ 源代码中的所有字符串文字包围起来,用于我们的 unicode 端口。
这个问题回答了我如何搜索字符串文字,但是有没有办法用 _T() 包围匹配的文本而不是用其他东西替换?
无论如何,我打算一次只做一个字符串,而不是一次全部做,但希望避免自己输入或使用 Visual Assist 中的“Surround With”来处理每个字符串。
所以我想用 _T(...) 将我们的 C++ 源代码中的所有字符串文字包围起来,用于我们的 unicode 端口。
这个问题回答了我如何搜索字符串文字,但是有没有办法用 _T() 包围匹配的文本而不是用其他东西替换?
无论如何,我打算一次只做一个字符串,而不是一次全部做,但希望避免自己输入或使用 Visual Assist 中的“Surround With”来处理每个字符串。
Jochen Kalmbach 的答案可能适用于旧版本的 Visual Studio,但它不适用于我在 Visual Studio 2013 中。但是,查找/替换输入框右侧的小 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
转到:编辑|查找和替换...|快速替换..然后输入:
Find: :q
Replace with : _T(\0)
Use: Regular Expressions