Como modificar uma expressão regular em um texto⚓︎
Este caso de uso serve para localizar e substituir CPFs ao longo de um texto a ser enviado para publicação pela Imprensa Oficial. Para isso, é necessário descaracterizar parte da cadeia de caracteres dos CPFs dos servidores que têm atos publicados no Diário Oficial do Estado.
São 2 desafios superados com esse protótipo de robô:
- modificar parte da cadeia de caracteres que formam o CPF;
- realizar o loop buscando a expressão regular do CPF, sem contar com uma variável numérica que esteja presente em uma tabela
O texto a ser modificado inclui várias partes obrigatórias e padronizadas, exceto o CPF, que aparece na íntegra, do sistema onde é extraído. Sua notação segue o modelo: 000.000.000-00
Após descaracterizá-lo para o modelo xxx.000.000-xx
, é preciso procurar por todos os demais, ao longo do texto. Um loop aumentando a 'variável CPF' não seria aplicável, pois não se trata de uma variável numérica. Assim, a estratégia desse código foi utilizar as ações ACESSAR Voltar texto e RÓTULO Voltar Texto:
O produto final é a junção dos atos prontos para serem assinados e enviados para publicação, com os CPFs modificados.
A parte do código a que fez referência este post:
Código-Fonte
# Anonimização de CPFs
LABEL 'Voltar texto'
IF Contains(gabarito_copiado, $'''CPF''', True) THEN
Text.CropText.CropTextBetweenFlags Text: gabarito_copiado FromFlag: $'''CPF ''' ToFlag: $''',''' IgnoreCase: True CroppedText=> CPF_cortado IsFlagFound=> IsFlagFound
Text.GetSubtext.GetSubtextFromStartTo Text: CPF_cortado NumberOfChars: 4 Subtext=> inicio_cpf
Text.GetSubtext.GetSubtextFrom Text: CPF_cortado CharacterPosition: 11 Subtext=> fim_cpf
# Alguns CPFs tem espaço no meio, por isso coloquei esse "SE"
Text.GetSubtext.GetSubtextFrom Text: CPF_cortado CharacterPosition: 4 Subtext=> meio_cpf
IF StartsWith(meio_cpf, espaço, False) THEN
Text.GetSubtext.GetSubtextFrom Text: CPF_cortado CharacterPosition: 12 Subtext=> fim_cpf
Text.Trim Text: fim_cpf TrimOption: Text.TrimOption.ToEnd TrimmedText=> fim_cpf
END
Text.JoinText.Join List: $'''%inicio_cpf%***.***%fim_cpf%''' Result=> cpfanonimizado
# Localizar e substituir o CPF
MouseAndKeyboard.SendKeys.FocusAndSendKeysByTitleClass Title: $'''gabarito1 [Modo de Compatibilidade] - Word''' Class: $'''''' TextToSend: $'''{Control}({U})%CPF_cortado%{Tab}%cpfanonimizado%{Tab}{Tab}{Return}{Left}{Left}{Return}{Return}{Return}''' DelayBetweenKeystrokes: 30 SendTextAsHardwareKeys: False
Text.CropText.CropTextAfterFlag Text: gabarito_copiado FromFlag: $'''CPF ''' IgnoreCase: True CroppedText=> gabarito_copiado IsFlagFound=> IsFlagFound
GOTO 'Voltar texto'
END
Saiba Mais⚓︎
A página dos guias da Microsoft sobre manipulação de texto pode ser acessada neste link.
Para estudar a criação e a execução de loops, acesse esta página