2 Frage: Groovy Code - Ein Feld mit Regex abgleichen und einen leeren Wert generieren, wenn keine Übereinstimmung vorliegt

Frage erstellt am Wed, May 8, 2019 12:00 AM

Ich habe ein Feld, das basierend auf einigen analysierten und neu formatierten Daten erstellt wurde. Wenn das Endergebnis nicht mit einem bestimmten Muster übereinstimmt, möchte ich es durch einen leeren Wert ersetzen. Ich habe einen groovigen Code geschrieben, erhalte aber weiterhin die Fehlermeldung "No such property", wenn ich ihn ausführe.

Ich habe versucht, online herumzustöbern und den Code zu verschieben, aber mit meiner sehr begrenzten Erfahrung habe ich kein Glück.

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

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

Meine erwarteten Ergebnisse wären, die Daten ['FormattedNum'] beizubehalten, wenn sie mit dem regulären Ausdruck übereinstimmen. Wenn dies nicht der Fall ist, ersetzen Sie einfach das, was sich in diesem Feld befindet, als Leerzeichen.

    
0
2 Antworten                              2                         

Was sind Daten? Ist es eine Karte? Nehmen wir an, dass dies der Fall ist und dass es in der Methode oder überall dort, wo sich dieser Code befindet, außerhalb des Gültigkeitsbereichs liegt ...

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

Sie können dies tun:

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

==~ ordnet das Thema dem regulären Ausdruck zu, wie in im offiziellen Groovy erläutert doc . Es hat die gleiche Semantik wie das Aufrufen von matches für einen String, jedoch in groovender Weise

    
0
2019-05-09 12: 37: 05Z
Quelle platziert Hier