从MSDN,从“CString::Format”的解释中可以看出,
如果字符串对象本身作为Format的参数提供,则调用将失败。以下是一个例子:
CString str = "Some Data";
str.Format("%s%d", str, 123); // Attention: str is also used in the parameter list.
现在我想检查一下我的项目中是否有违反此规则的代码。
我认为正则表达式可以帮助我实现这一目标。 (我的意思是通常在编辑器的搜索/查找文件函数中构建的正则表达式,而不是C#/ C ++ / Java / Python中使用的正则表达式等)
简而言之,表达式可能如下所示:
XXX.Format\(.*XXX.*\)
其中XXX可以变为有效的变量名称。例如。 “str”,“sql_string”,“_ mystr”
注意:我可以下载任何编辑器,如Notepad ++,sublime text;我有视觉工作室。如果你能在任何编辑器上解决这个问题,那就没关系了。
答案 0 :(得分:1)
如下所示的正则表达式可以完成这项工作(使用\1
来引用第一个捕获组 - 您的变量):
^\s*(.+?)\.Format\(.*\1.*\)
有一些假设和注意事项:
我认为该变量是该行中的第一件事,仅以空格开头。
仅在.Format
之后检查变量以显示在括号中(正如您在问题中所述)。相同的变量可能出现在第一个参数中,正则表达式当前不会检查它。
如果需要,可以在正则表达式中添加额外的空格。