计算字符串中包含字母的次数

时间:2010-12-29 19:44:09

标签: flash actionscript-3 string actionscript count

这个问题非常自我解释 是否可以计算as3中字符串中包含字母的次数 并将值返回到某个变量

7 个答案:

答案 0 :(得分:8)

function patternOccurrences(pattern:String, target:String):uint
    {
    return target.match(new RegExp(pattern, "g")).length;
    }

答案 1 :(得分:4)

另一种选择是在字符串上使用split()并返回其长度减去1。我发现使用RegExp比基本需求更容易。

示例:

function getMatchCount( search:String, target:String ):int
{
    return target.split(search).length - 1;
}

trace( getMatchCount('a', 'aardvark') ); // 3
trace( getMatchCount('ball', 'volleyball baseball basketball football') ); // 4

答案 2 :(得分:3)

我没有使用过多次使用Actionscript或Flash - 快速google导致了这一点:

function getEntranceNumber(mytext:String,myletter:String):Number
    {
        if( myletter.length>1)
        {
            trace("length of a letter should be equal to 1");
            return 0;
        }
        else
        {
            var total:Number = 0;
            var i:Number;
            for( i=0 ; i<mytext.length ; i++ )
            {
                if( mytext[i]==myletter[0] )
                    total++;
            }
            return total;
        }
    }

来源:http://www.actionscript.org/forums/showthread.php3?t=145412

编辑:这是另一个链接,其中包含有关同一主题的一些其他信息:

http://www.kirupa.com/forum/showthread.php?t=94654(我相信它甚至包含.fla脚本文件)

答案 3 :(得分:3)

当然可以。请查看ActionScript参考:

Stringstring.length,和 string.charAt()

答案 4 :(得分:2)

使用RegExp的解决方案:

trace(count("abcdefg", "a"));//1
trace(count("aacdefg", "a"));//2
trace(count("aacdeAg", "a"));//2
trace(count("aacdeaa", "a"));//4
trace(count("aacdeaa", "e"));//1
trace(count("eacdeae", "e"));//3
trace(count("eacdeae", "z"));//0
function count(s : String, letter : String) : int {
    return s.match(new RegExp(letter,"g")).length;
}

答案 5 :(得分:1)

这样一个简单任务的正则表达式是IMHO矫枉过正。这是最直接也非常有效的方式:

    static public function CountSingleLetter( where : String, what : String ):int
    {
        var count:uint = 0;
        for (var k:Number = 0; k < where.length; ++k )
        {
            if (where.charAt(k) == what )
            {
                ++count;
            }
        }
        return count;
    }

将它放入一些Utils类,或者放入String.prototype,即。

String.prototype.RemoveLastChar = function():String
{
    return this.substr(0, this.length - 1);
}
遗憾的是,调用原型版本不是你所期望的:

line = line["RemoveLastChar"]();

将CountLingleLetter替换为RemoveLastChar,作为读者的练习:)

答案 6 :(得分:1)

这个比reg-exp快20倍

function count(pattern:String, target:String) : uint {
    var count:uint=0;
    var index:int = -1;
    while((index = target.indexOf(pattern, index+1)) >= 0){
        count++;
    }
    return count;
}