2 سؤال: رمز رائع - مطابقة حقل باستخدام regex وإنشاء قيمة فارغة إن لم يكن تطابقًا

السؤال الذي تم إنشاؤه في 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'] إذا كانت تتطابق مع regex وإذا لم تكن كذلك ، فاستبدل كل ما هو موجود في هذا الحقل فارغًا.

    
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
وضع مصدر هنا