【问题标题】:Visual Studio search/replace with local function nameVisual Studio 搜索/替换为本地函数名称
【发布时间】:2019-09-28 13:28:19
【问题描述】:

我正在寻找一种方法来搜索我的 cs 文件并将一些文本替换为本地函数的名称。

例如

private void SampleFunction()
{
  string foo = “bar“;
}

任务:搜索每个“bar”并替换为函数名称。

结果是:

private void SampleFunction()
{
  string foo = “SampleFunction“;
}

我知道我可以在运行时使用反射,但是由于混淆,函数名称不可读,这就是我喜欢将函数名称放入字符串的原因。为我使用的 600 个函数自动执行。

有什么(简单的)方法可以存档吗? 感谢您的支持。

顺便说一句。我用谷歌搜索并搜索了堆栈溢出,但没有找到任何对这种特殊情况有用的帖子。

【问题讨论】:

    标签: visual-studio search replace


    【解决方案1】:

    如果你只是想在 VS 中这样做,你可以做一个 ctrl-shift-H 来查找和替换。这可以在文件、文件夹、项目或解决方案中完成。

    如果你想在代码中做,你可以使用类似这样的东西

    How to Find And Replace Text In A File With C#

    【讨论】:

      【解决方案2】:

      正如其他回答者所说,您可以使用 Ctrl+Shift+H 来搜索和替换所有文件,但您需要一些相当聪明的正则表达式(正则表达式)来获得您想要的直接地。您必须使用复选框将搜索替换设置为使用正则表达式。 (如果你不经常使用它,不要忘记关闭它。)

      在您的示例中,查找

      会很简单
      void (\S+)\(\)(\s*){(\r\n\s*)string foo = "bar";
      

      并用类似的东西替换它

      void $1()$2{$3string foo = "$1";
      

      或者更确切地说,如果您已经知道正则表达式,它 很简单。我在我自己的一些代码上尝试了这个正则表达式并且它有效。但是,如果某些方法带参数而其他方法不带参数,如果一些方法是 void 而另一些方法返回一些东西,如果像 publicprivate 这样的可见性关键字都出现等等,则变得更加困难,等等等等。

      老实说,您可能只想硬着头皮,部分地手工完成这些工作。您可以搜索签名特征(如voidpublic)并手动编辑每个实例。

      您也可以编写适用于您的文件的代码,但这肯定会比其他选项花费更长的时间。

      顺便说一句,有一个名为 nameof(…) 的函数也能很好地做到这一点——但你仍然需要确定使用它的每个地方,并且它返回运行时值使用时,所以如果名称被混淆,nameof() 也应该是。

      如果您为此目的在网络上搜索正则表达式,您可能会发现一些足够先进的东西来完全满足您的搜索需求。除非您知道正则表达式或现在有时间学习它,否则编辑它以完全满足您的需要将是一种负担。 :-)

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-12
        • 1970-01-01
        • 2011-04-20
        • 2019-05-27
        • 2016-10-17
        • 2023-03-10
        • 1970-01-01
        • 2018-07-25
        相关资源
        最近更新 更多