2 Вопрос: Groovy Code - сопоставление поля с использованием регулярного выражения и генерация пустого значения, если не совпадает

вопрос создан в Wed, May 8, 2019 12:00 AM

У меня есть поле, которое было создано на основе некоторых проанализированных и переформатированных данных. Если конечный результат не соответствует конкретному шаблону, я хочу заменить его просто пустым значением. У меня написан отличный код, но я продолжаю получать ошибки «Нет такого свойства», когда я его запускаю.

Я пытался ковыряться в Интернете и перемещать код, но с моим очень ограниченным опытом мне не повезло.

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

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

Мои ожидаемые результаты будут состоять в том, чтобы сохранить данные ['FormattedNum'], если они соответствуют регулярному выражению, а если нет, просто замените все, что есть в этом поле, пустым.

    
0
2 ответа                              2                         

Что такое данные? Это карта? Предположим, что это так, и он находится вне области видимости в методе или там, где находится этот код ...

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

Вы можете сделать это:

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

==~ сопоставляет тему с регулярным выражением, как было объяснено в официальном Groovy. документ . Он имеет ту же семантику, что и вызов matches для строки, но в отличной форме

    
0
2019-05-09 12: 37: 05Z
источник размещен Вот