2 Questão: Código Groovy - Combinando um campo usando regex e gerando um valor em branco se não for um jogo

pergunta criada em Wed, May 8, 2019 12:00 AM

Eu tenho um campo que foi criado com base em alguns dados analisados ​​e reformatados. Se o resultado final não corresponder a um padrão específico, quero substituí-lo apenas por um valor em branco. Eu tenho algum código groovy escrito, mas continuo a receber erros de "Nenhuma tal propriedade" quando eu corro.

Eu tentei bisbilhotar on-line e mudar o código, mas com minha experiência muito limitada, não estou tendo sorte.

def formattedData=data['FormattedNum']
def regExpStr=[A-Z]{5}[':'][0-9]{4}

if (formattedData.matches(regExpStr)){
    formattedData
} else {
    formattedData =''
}  ; 

Meus resultados esperados seriam manter os dados ['FormattedNum'] se eles corresponderem à regex e, se isso não ocorrer, basta substituir o que estiver nesse campo como branco.

    
0
2 Respostas                              2                         

O que são dados? É um mapa? Vamos supor que é e está fora do escopo do método ou onde quer que esse código esteja localizado ...

def data = [FormattedNum: 'ABCDE:0123']
def formattedData= data['FormattedNum']
def regExpStr = /[A-Z]{5}[':'][0-9]{4}/
if (formattedData.matches(regExpStr)){     
    formattedData 
} 
else { 
    formattedData = '' 
}
    
0
2019-05-09 12: 25: 34Z

Você pode fazer isso:

def formattedData = data['FormattedNum']
if (!(formattedData ==~ '[A-Z]{5}:[0-9]{4}')) {
   formattedData = ''
}

==~ corresponde ao assunto com a expressão regular, conforme explicado na no Groovy oficial doc . Ele tem a mesma semântica que chamar matches em uma string, mas de maneira interessante

    
0
2019-05-09 12: 37: 05Z
fonte colocada Aqui