0

我想取一个普通的字符串,并返回一个仅包含大写字母索引的数组。

所以基本上:

var str1:String = "TextT STufF" var capArray = [0,3,5,6,9]

我可以为这样的空间做到这一点:

for(var n5=0; n5 < str1.length; n5++)
    {
        numSpace = str1.indexOf(" ", numSpace+1); //That space is what determines it. How do I make it search for all Caps?
        if(numSpace == -1)
        {
            n5 = str1.length;
        }
        else{arySpaceInd[n5] = numSpace;}
    }
    trace(aryVerse);

可以为首都做吗?

4

2 回答 2

1

我会()使用string#replace()这个......这样的事情应该有效:

function getIndexes(input:String):Vector.<int>
{
    var output:Vector.<int> = new <int>[];
    input.replace(/[A-Z]/g, function(match,ndx) { output.push(ndx); return match; });
    return output;
}
于 2013-10-30T04:38:55.780 回答
1

就像@Cherniv 指出的那样,只需将序列中的每个字符转换为大写并检查它是否相同。如果是,则为大写字母。函数示例:

function getIndexes(input:String):Vector.<int>
{
    var output:Vector.<int> = new <int>[];
    for(var i:int = 0; i < input.length; i++)
    {
        if(input.charAt(i).toUpperCase() === input.charAt(i))
        {
            output.push(i);
        }
    }

    return output;
}

和测试:

trace(getIndexes("SomeUpperCaseText")); // 0,4,9,13
于 2013-10-30T04:36:35.180 回答