2 Soalan: Kod Groovy - Memadankan medan dengan menggunakan regex dan menjana nilai kosong jika bukan perlawanan

soalan dicipta di Wed, May 8, 2019 12:00 AM

Saya mempunyai medan yang dibuat berdasarkan beberapa data yang diuraikan dan diformat. Jika hasil akhir tidak sepadan dengan pola tertentu, saya ingin menggantikannya dengan hanya nilai kosong. Saya mempunyai beberapa kod groovy bertulis tetapi saya terus mendapat ralat "Tidak seperti harta" apabila saya menjalankannya.

Saya telah mencubanya di sekitar talian dan memindahkan kod sekitar tetapi dengan pengalaman saya yang sangat terhad saya tidak mempunyai nasib.

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

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

Keputusan yang diharapkan adalah untuk mengekalkan data ['FormattedNum'] jika ia sepadan dengan regex dan jika tidak, hanya gantikan apa saja dalam medan tersebut sebagai kosong.

    
0
2 Jawapan                              2                         

Apakah data? Adakah ia peta? Mari kita menganggapnya dan ia keluar dari skop dalam kaedah atau di mana sahaja kod ini terletak ...

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

Anda boleh melakukan ini:

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

==~ sepadan dengan subjek dengan ungkapan biasa seperti yang dijelaskan di Groovy rasmi doc . Ia mempunyai semantik yang sama seperti menelefon matches pada rentetan tetapi dengan cara yang mengasyikkan

    
0
2019-05-09 12: 37: 05Z
sumber diletakkan di sini