我想将C风格的LOGD("hello");转换为LOGD<<"hello";在Eclipse中查找/替换。我该怎么做?
LOGD("hello");
LOGD<<"hello";
fbcarpbf1#
您可以在正则表达式模式下尝试以下查找和替换:
查找:
LOGD\("([^"]*)"\);
替换:
LOGD << "$1";
我们在代码中捕获输入到LOGD中的字符串的文本,然后在替换中将其用作<<运算符的RHS。(第一)捕获组作为$1可用。
LOGD
<<
$1
myss37ts2#
虽然regexp可能没问题,但我建议使用宏或更好的模板内联函数,而不是regexp转换:
#define LOGD(x) LOGD_CPP<<(x)
或
template<typename X> inline void LOGD(const X &x) {LOGD_CPP<<x;}
原因是为了符合x内部可能的语法复杂性(嵌套括号,lambda函数等)。
x
rdrgkggo3#
可以在Eclipse中使用基于正则表达式的查找/替换,如果搜索条件为
LOG(.*?)\((.*?)\)
并替换为
LOG\1 << \2
这将在日志中找到所有级别,如调试、信息警告错误等
LOGD("DEBUG:hello"); LOGW("WARNING:World"); LOGE("ERROR:Fooo"); LOGI("INFO:Fooo);
并将其替换为
LOGD << "DEBUG:hello"; LOGW << "WARNING:World"; LOGE << "ERROR:Fooo"; LOGI << "INFO:Fooo;
3条答案
按热度按时间fbcarpbf1#
您可以在正则表达式模式下尝试以下查找和替换:
查找:
替换:
我们在代码中捕获输入到
LOGD
中的字符串的文本,然后在替换中将其用作<<
运算符的RHS。(第一)捕获组作为$1
可用。myss37ts2#
虽然regexp可能没问题,但我建议使用宏或更好的模板内联函数,而不是regexp转换:
或
原因是为了符合
x
内部可能的语法复杂性(嵌套括号,lambda函数等)。rdrgkggo3#
可以在Eclipse中使用基于正则表达式的查找/替换,
如果搜索条件为
并替换为
这将在日志中找到所有级别,如调试、信息警告错误等
并将其替换为