如何查找字符串中是否存在大写字符?

How to find if exist an uppercase character in string?

我需要知道一个字符串是否至少是一个字符或更多。我需要找到 uppercase 字符 .

我使用了这个代码:

str testStr;
int flag;
testStr = "abdE2" ;

flag = strScan(testStr , "ABCDEFGHILMNOPQRSTUVZ" ,flag ,strLen(testStr));
info(strFmt("%1",flag) );

但是不行!

一个问题是函数strScan不区分大小写

有解决办法吗?

谢谢,

尽情享受吧!

这是我写的一份工作,它显示了 3 种不同的比较字符串的方法,区分大小写。就 copy/paste/run.

static void Job86(Args _args)
{
    str a = 'Alex';
    str b = 'aleX';
    int i;
    int n;
    str     c1, c2;


    setPrefix("Compare");
    for (n=1; n<=strLen(b); n++)
    {
        c1 = subStr(a, n, 1);
        c2 = subStr(b, n, 1);

        if (char2num(c1, 1) == char2num(c2, 1))
            info(strFmt("Char2Num()\t%1 == %2", c1, c2));
        else
            info(strFmt("Char2Num()\t%1 != %2", c1, c2));


        if (strCmp(c1, c2) == 0)
            info(strfmt("strCmp()\t%1 == %2", c1, c2));
        else
            info(strFmt("strCmp()\t%1 != %2", c1, c2));

        i = System.String::Compare(c1, c2);

        if (i == 0)
            info(strfmt("System.String::Compare()\t%1 == %2", c1, c2));
        else
            info(strFmt("System.String::Compare()\t%1 != %2", c1, c2));
    }   
}

下面的代码测试一个字符串是否是一个或多个字符,然后找到所有大写字符。数字被忽略,因为它们不能是大写。

static void findCapitalLetters(Args _args)
{
    str testStr = "!#dE2";
    int i;
    int stringLenght = strLen(testStr);
    str character;

    //Find out if a string is at least one character or more
    if (stringLenght >= 1)
    {
        info(strFmt("The string is longer than one character: %1",stringLenght));
    }

    //Find the uppercase character (s)
    for (i=1; i<=stringLenght; i+=1)
    {
        character = subStr(testStr, i, 1);

        if (char2num(testStr, i) != char2num(strLwr(testStr), i))
        {
            info(strFmt("'%1' at position %2 is an uppercase letter.", character, i));
        }
    }  
}

这是输出:

编辑:正如 Jan B. Kjeldsen 指出的那样,使用 char2num(testStr, i) != char2num(strLwr(testStr), i) 而不是 char2num(testStr, i) == char2num(strUpr(testStr), i) 以确保它正确评估符号和数字。