Como: Automatizar texto Pesquisar e substituir
Visual Studio permite pesquisar e substituir texto em documentos que estão abertos no ambiente de desenvolvimento integrado (IDE) e contidas em arquivos no sistema. A maneira principal para realizar isso é usando o FindReplace e Execute métodos para o Find objeto. The TextSelection e EditPoint objetos também oferecem a FindPattern método. Para obter mais informações, consulte o FindPattern método em Como: Controlar o Editor de código (Visual Basic).
Observação: |
---|
O vsFindOptionsMatchInHiddenText valor da constante não é válido para o FindPattern método porque ele pesquisa todo o texto, incluindo texto oculto. |
A versão do Find no EnvDTE80 namespace chamado Find2. É igual a Find objeto, mas oferece uma nova propriedade chamada WaitForFindToComplete. Quando essa propriedade booleana é definida como True, a operação de localização não concluir até que todos os itens selecionados documentos tem sido pesquisados.
Se, por exemplo, você procurar uma palavra em 100 documentos, você pode receber resultados incompletos, a menos que você seja usado o WaitForFindToComplete propriedade ou manipulado o FindDone evento. Os métodos funcionar, mas definindo o WaitForFindToComplete propriedade é uma forma menor e mais fácil para garantir que todos os documentos são pesquisados antes de exibir os resultados da Pesquisar.
Observação: |
---|
As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritas na Ajuda, dependendo das configurações ativas ou configurações de edição.Esses procedimentos foram desenvolvidos com o Geral Development Settings ativo.Para alterar as configurações, escolher Import and ExportSettings on the Tools menu.Para obter mais informações, consulte Configurações do Visual Studio. |
Exemplo
Os exemplos a seguir demonstram como referenciar e usar os vários membros do modelo de automação de localizar.Este exemplo cria um documento de texto com algum texto e em seguida, pesquisa e substitui o texto usando métodos diferentes.Para executar esse exemplo, substitua o OnConnection método em um suplemento simples com o código a seguir. Para executar diferentes seções deste exemplo, descomente o código apropriado.
Public Sub OnConnection(ByVal application As Object, ByVal _
connectMode As ext_ConnectMode, ByVal addInInst As Object, _
ByRef custom As Array) Implements IDTExtensibility2.OnConnection
_applicationObject = CType(application, DTE2)
_addInInstance = CType(addInInst, AddIn)
searchReplace(_applicationObject)
End Sub
Public Sub searchReplace(ByVal dte As DTE2)
Dim findWin As Find2
Dim doc As Document
Dim textDoc As TextDocument
Dim textSel As TextSelection
Dim iCtr As Integer
' Create a new text file.
dte.ItemOperations.NewFile("General\Text File")
' Set up references for the text document, Find object, and
' TextSelection object.
doc = dte.ActiveDocument
textDoc = CType(doc.Object("TextDocument"), TextDocument)
textSel = textDoc.Selection
findWin = CType(dte.Find, Find2)
' Make sure all docs are searched before displaying results.
findWin.WaitForFindToComplete = True
' Insert ten lines of text.
For iCtr = 1 To 10
textDoc.Selection.Text = "This is a test" & vbCr
Next iCtr
textDoc.Selection.Text = "This is a different word"
' Uses FindReplace to find all occurrences of the word, test, in
' the document.
MsgBox("Now changing all occurrences of 'test' to 'replacement'.")
findWin.FindReplace(vsFindAction.vsFindActionReplaceAll, "test", _
vsFindOptions.vsFindOptionsMatchCase, "replacement", _
vsFindTarget.vsFindTargetCurrentDocument, , , _
vsFindResultsLocation.vsFindResultsNone)
' Uses Find2.Execute to find the word, different, in the document.
' findWin.FindWhat = "different"
' findWin.MatchCase = True
' findWin.Execute()
' Uses Find2.Execute to replace all occurrences of the word, Test,
' with the word, replacement.
' findWin.FindWhat = "test"
' findWin.ReplaceWith = "replacement"
' findWin.Action = vsFindAction.vsFindActionReplaceAll
' findWin.Execute()
End Sub
public void OnConnection(object application, ext_ConnectMode
connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
searchReplace(_applicationObject);
}
public void searchReplace(DTE2 dte)
{
Find2 findWin;
Document doc;
TextDocument textDoc;
TextSelection textSel;
int iCtr;
// Create a new text file.
dte.ItemOperations.NewFile("General\\Text File","New
file",Constants.vsViewKindTextView);
// Set up references for the text document, Find object, and
// TextSelection object.
doc = dte.ActiveDocument;
textDoc = (TextDocument) doc.Object("TextDocument");
textSel = textDoc.Selection;
findWin = (Find2) dte.Find;
// Make sure all docs are searched before displaying results.
findWin.WaitForFindToComplete = true;
// Insert ten lines of text.
for(iCtr=1; iCtr<=10; iCtr++)
{
textDoc.Selection.Text = "This is a test"+Environment.NewLine;
}
textDoc.Selection.Text = "This is a different word";
// Uses FindReplace to find all occurrences of the word, test, in
// the document.
System.Windows.Forms.MessageBox.Show("Now changing all occurrences
of 'test' to 'replacement'.");
findWin.FindReplace(vsFindAction.vsFindActionReplaceAll, "test",
vsFindOptions.vsFindOptionsFromStart, "replacement",
vsFindTarget.vsFindTargetCurrentDocument, "",
"",vsFindResultsLocation.vsFindResultsNone);
// Uses Find2.Execute to find the word, different, in the document.
// findWin.FindWhat = "different"
// findWin.MatchCase = True
// findWin.Execute()
// Uses Find2.Execute to replace all occurrences of the word, Test,
// with the word, replacement.
// findWin.FindWhat = "test"
// findWin.ReplaceWith = "replacement"
// findWin.Action = vsFindAction.vsFindActionReplaceAll
// findWin.Execute()
}
Consulte também
Tarefas
Como: Compilar e executar os exemplos de códigos automação objeto modelo
Como: Controlar o Editor de código (Visual Basic)
Demonstra Passo a passo: Criando um assistente
Conceitos
Gráfico do modelo de objetos de automação
Outros recursos
Criando e controlando o ambiente Windows