como posso obter uma substring entre dois delimitadores diferentes que também está em uma posição variável dentro de uma determinada string.
Por exemplo:
String1 = "my first example {{my first substring}}"
String2 = "my great second example which has much more words included before {{my second substring}} and after the substring"
Substring1 = "my first substring"
Substring2 = "my second substring"
Como você pode ver, o delimitador antes da substring é "{{" e o depois é "}}".
Tudo o que encontrei em relação às operações de substring são configurações de posição estritas que não ajudam aqui.
Desde já, obrigado!
Isso mesmo. Para resolver esse problema, devemos ter algum caractere imprimível que esteja ausente na string de origem (pelo menos antes de finalizar o delimitador).
Por exemplo, se tal char for
@
o código pode serAcho que encontrei uma solução:
Resultado:
Funciona, mas não entendo muito bem como é capaz de determinar a substring da tmp-string, pois não está em seu conteúdo.
Eu suponho que você só precisa de uma substring de cada string. Aqui está uma solução robusta que manipula qualquer valor, exceto que não pode manipular
!
o valor e também^
é removida se!
estiver no valor.-- RESULTADO --
Existem dois truques principais para obter a substring.
!str:*{{!
exclui tudo na primeira ocorrência de{{
.for %%N in ...
cria uma nova linha entre aspas%%N
para que a!sub:{{=%%~N!
nova linha substitua todos os}}
. O internofor /f
então itera cada string separadamente e odo
loop mantém apenas o primeiro resultado. Ox
é anexado apenas no caso de a substring estar vazia.