2 Pytanie: Groovy Code - Dopasowywanie pola za pomocą wyrażenia regularnego i generowanie pustej wartości, jeśli nie jest zgodne

pytanie utworzone w Wed, May 8, 2019 12:00 AM

Mam pole, które zostało utworzone na podstawie niektórych przeanalizowanych i sformatowanych danych. Jeśli wynik końcowy nie pasuje do określonego wzorca, chcę go zastąpić tylko pustą wartością. Mam napisany jakiś groovy kod, ale nadal występuję błędy „Brak takiej właściwości” podczas jego uruchamiania.

Próbowałem gryźć online i przenosić kod, ale z moim bardzo ograniczonym doświadczeniem nie mam szczęścia.

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

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

Moimi oczekiwanymi rezultatami byłoby zachowanie danych ['FormattedNum'], jeśli pasuje do wyrażenia regularnego i jeśli nie, po prostu zastąp to, co jest w tym polu jako puste.

    
0
2 odpowiedzi                              2                         

Co to są dane? Czy to mapa? Załóżmy, że jest i jest poza zakresem w metodzie lub gdziekolwiek znajduje się ten kod ...

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

Możesz to zrobić:

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

==~ pasuje do tematu z wyrażeniem regularnym, jak wyjaśniono w oficjalnym Groovy doc . Ma taką samą semantykę, jak wywołanie matches na łańcuchu, ale w groovy sposób

    
0
2019-05-09 12: 37: 05Z
źródło umieszczone tutaj