39

VisualStudio 中似乎没有对保留大小写的查找/替换的内置支持(另请参见相应的功能请求)。

我的意思是:搜索“BadJob”并替换为“GoodJob”将执行以下替换

'badjob' -> 'goodjob'  
'BadJob' -> 'GoodJob'  
'badJob' -> 'goodJob'  
'BADJOB' -> 'GOODJOB'

所以我正在寻找一个宏/加载项,它实现了保留大小写的查找/替换。如果不存在,那么编写我自己的一个好的起点是什么(最好基于内置的查找/替换功能)。

更新:
我知道我可以进行 4 次手动替换来完成这项工作,但我正在寻找一种在 VS 中自动执行此操作的方法(例如 Emacs 就是这样做的)。一个常见的场景:一个名为 'foo' 的变量和一些函数 DoFoo(), GetFoo(), ... 以及一些包含 'foo' 'Foo' 等的附加注释。现在将 'foo' 重命名为 bar' 产生变量 'bar' , 函数 DoBar(), GetBar() 等由一个查找/替换。

4

5 回答 5

9

目前在 Visual Studio 中是不可能的。

您可以为此功能投票:

https://developercommunity.visualstudio.com/content/idea/580810/case-preserving-search-replace.html

我通常最终打开 Sublime Text,在那里复制和粘贴代码,在那里执行保留大小写的替换,然后复制并粘贴回 Visual Studio。

于 2015-07-28T11:40:22.690 回答
2

进行查找/替换时打开查找选项。检查区分大小写的选项。除非您执行以下操作,否则您将不得不手动进行口味:http ://www.aaronlerch.com/blog/2007/03/28/visual-studio-find-and-replace-regular-expressions/或使用某些东西喜欢: http: //www.download3k.com/MP3-Audio-Video/Utilities-Plug-Ins/Download-Find-Replace.html

于 2008-12-14T22:37:11.417 回答
2

现在可以进行保留大小写的 find 和 replace,尽管仅适用于所有大写、所有小写或标题大小写(因此它不适用于您的特定示例)。

详细信息可以在这里找到(复制如下):

在查找和替换中保留大小写

您现在可以在编辑器的 Find 小部件中进行替换时保留大小写。当在编辑器的替换输入框中打开保留大小写选项(AB 按钮)时,该功能将打开。

按钮

目前 VS Code 仅支持保留Full Upper CaseFull Lower CaseTitle Case

例子

于 2019-09-03T04:13:45.677 回答
0

这就是我应对(出)它的方式:

在 Notepad++ 中打开文件,并运行一个执行大小写替换的 python 脚本(就像我们以前能够用 Visual Studio 宏做的那样......啊,损失)

安装Notepad++
安装npp python 脚本
这样创建一个新脚本:

from Npp import *

#Use capitalizeFirst because .capitalize will make the remaining string lower, but in CamelCase examples 
#we will want to preserve the user-typed casing. e.g. YourMonkeyMagic -> MyMonkieMagik 
def capitalizeFirst(str):
    return '%s%s' % (str[:1].upper(), str[1:])

#***  Ask user what to find and replace ***
find_str=notepad.prompt(notepad, 'Find (keeping case)', '')
replace_str=notepad.prompt(notepad, 'Replace (keeping case)', '')

#*** Do a case-sensitive replacement on each type ***
editor.replace(find_str.upper(), replace_str.upper())
editor.replace(find_str.lower(), replace_str.lower())
editor.replace(capitalizeFirst(find_str), capitalizeFirst(replace_str))
editor.replace(find_str, replace_str)
于 2018-11-30T14:26:36.147 回答
-2

我知道这并不能完全按照您的要求回答您的问题,但是对于重命名变量和方法名称,您可以通过右键单击标识符并使​​用快捷菜单上的重命名选项来避免整个问题。这将更新对该变量或方法名称的任何引用。

警告:
它仅适用于当前解决方案的范围。
它只更新托管代码中的引用。
它不会更新诸如“badcode”之类的文字字符串
它不会更新您的评论。

这是 VS2005/2008 中我最喜欢的功能之一。

于 2008-12-16T05:27:07.703 回答