Archive for Kasım 12th, 2013

Dynamics Ax’ta Regular expression kullanımına örnekler

Merhaba

Birinci örnekte metoda gönderilen metinin nokta(). ve tire(-)  haricinde özel karakter içerip içermediğini kontrol ediyoruz.

static boolean isProductNumberValid(EcoResProductNumber _ecoResProductNumber )
{
    Str MatchPattern ="[^a-zA-Z0-9\-.]";
    System.Text.RegularExpressions.Match myMatch;
    ;

    myMatch = System.Text.RegularExpressions.Regex::Match(_ecoResProductNumber,
                                 MatchPattern);

    return !myMatch.get_Success();

}

İkinci örnekte ise gönderilen metindeki özel karakterleri tire(-) ile değiştiriyoruz. Regex ile köşeli parantez “[ ]” ve ters sılaş “\” karakterlerini değiştiremedim. Bu yüzden ax’ın strReplace() metodunu kullanarak değiştirmek zorunda kaldım.

static EcoResProductNumber clearProductNumber(EcoResProductNumber _EcoResProductNumber)
{
    Str                 Pattern =  "[ :;,/+*'@_#!|$½%&(){}^~<> ]";
    EcoResProductNumber ecoResProductNumber;
    ;
ecoResProductNumber =System.Text.RegularExpressions.Regex::Replace(_EcoResProductNumber,
                                                        Pattern, "-");
    ecoResProductNumber = strReplace(ecoResProductNumber ,'[',"-");
    ecoResProductNumber = strReplace(ecoResProductNumber ,']',"-");
    ecoResProductNumber = strReplace(ecoResProductNumber ,'\\',"-");

    return  ecoResProductNumber;
}

Bu metodları Global sınıfına ekledim. Kullanımı çok basit.

static void SEC_FD_RegEx(Args _args)
{
    ;

    if(Global::isProductNumberValid("SEC.s-f.sdf."))
    {
        info("Kod doğru.");
    }

    info(Global::clearProductNumber("SEC D:;,/+*'@_#!|%&(){}^~[] "));
}

Selamlar.