Utilizando expressões regulares para substituir strings no PowerBuilder

Overview
Já exploramos como alterar textos no PowerBuilder em publicações anteriores, mas hoje vamos mergulhar em um método alternativo que esbanja flexibilidade. Preparados para descobrir como o uso inovador do VBScript.RegExp pode revolucionar a forma como lidamos com substituição de strings? Este post é para você que busca soluções eficientes e compatíveis com diversas versões do Windows. Uma dica especial de Armando Jr. vem para somar conhecimento e prática. Vamos lá!
Vimos em posts anteriores (Replace) como substituir textos no PowerBuilder, mas existe uma forma não-nativa que é mais flexível do que as demonstradas até o momento. O fonte abaixo demonstra esta funcionalidade.
1// Argumentos: -> .string as_texto
2// string as_procurar
3// string as_substitui_por
4// Retorno...: .
5//
6//////////////////////////////////////////////////////////////////////////
7
8integer li_return
9string ls_resultado
10
11OLEObject oleRegExp
12oleRegExp = CREATE OLEObject
13li_return = oleRegExp.ConnectToNewObject("VBScript.RegExp")
14if li_return <> 0 then
15 MessageBox("Erro: String Replace!", "Erro na substituição!~n~rFavor habilitar o Windows Script Host.", StopSign!)
16else
17 oleRegExp.Global = True
18 oleRegExp.IgnoreCase = True
19 oleRegExp.Pattern = as_procurar
20 ls_resultado= oleRegExp.Replace(as_texto, as_substitui_por)
21end if
22
23if IsValid(oleRegExp) then
24 oleRegExp.DisconnectObject()
25 Destroy oleRegExp
26end if
27
28return ls_resultado
Explicando o fonte acima:
- É criado um objeto Ole para nos conectarmos ao VBScript.RegExp;
- Este objeto é utilizado, chamando a função Replace (do VB Script);
- A string com os valores substituídos é retornada;
O exemplo é bastante simples. Caso esteja preocupado com compatibilidade, o VB Script é suportado a partir do Windows 98 e NT. Caso você utilize o windows 95, terá que baixar um pacote separado de suporte. Sendo assim, não há problemas se você estiver entre o Windows 98 e o Windows 10. 😉
Agradecimentos ao Armando Jr pela contribuição.