这个问题非常自我解释 是否可以计算as3中字符串中包含字母的次数 并将值返回到某个变量
答案 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参考:
答案 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;
}