Показать сообщение отдельно
Старый 03.07.2009, 17:59   #3  
in.dc is offline
in.dc
Участник
 
29 / 53 (2) ++++
Регистрация: 09.04.2009
char2num()
Цитата:
Сообщение от Poleax Посмотреть сообщение
...
Как заставить при сравнении различать регистр букв? Может какой флаг включить?
Через коды символов - char2num() :
X++:
static void jbCheckUppercase(Args _args)
{
    str strTest = 'ёЁItisВасилийBasil' ;
    int idxChar ;
    
    boolean isUpperCase( str 1 _char )
    {
        int charIdx = char2num( _char, 1  ) ;
        ;
        
        //  english
        if( charIdx >= char2num( 'A', 1  ) &&
            charIdx <= char2num( 'Z', 1  ) )
            return true ;
            
        //  russian
        if( charIdx == char2num( 'Ё', 1  ) ||
            (   charIdx >= char2num( 'А', 1  ) &&
                charIdx <= char2num( 'Я', 1  ) ) )
            return true ;
            
        return false ;
    }

    boolean isLowerCase( str 1 _char )
    {
        int charIdx = char2num( _char, 1  ) ;
        ;
        
        //  english
        if( charIdx >= char2num( 'a', 1  ) &&
            charIdx <= char2num( 'z', 1  ) )
            return true ;
            
        //  russian
        if( charIdx == char2num( 'ё', 1  ) ||
            (   charIdx >= char2num( 'а', 1  ) &&
                charIdx <= char2num( 'я', 1  ) ) )
            return true ;
            
        return false ;
    }
    ;
    
    for( idxChar=1; idxChar <= strlen( strTest ); idxChar++ )
        info( strfmt( "%1 - %2", substr( strTest, idxChar, 1 ), isUpperCase( substr( strTest, idxChar, 1 ) ) ) ) ;
}
P.S. strCmp - сравнивает с учетом регистра символов: strcmp( 'Ё', 'ё' ) = -1 ( !=0)
__________________
Dynamics AX 4.0 SP2

Последний раз редактировалось in.dc; 03.07.2009 в 18:05.
За это сообщение автора поблагодарили: Poleax (1).