1

如何使用 flash as3 计算字符串中大写字母的数量?

例如

var thestring = "This is The String";

应该返回 int 3

谢谢

4

4 回答 4

12
// Starting string.
var thestring:String = "This is The String";

// Match all capital letters and check the length of the returned match array.
var caps:int = thestring.match(/[A-Z]/g).length;
trace(caps); // 3
于 2012-07-18T07:14:52.843 回答
3

解决此问题的一种方法是将字符串转换为小写并计算受影响的字符。这意味着您不必指定要包含在“大写字母”类别中的字符,这并非易事。此方法支持重音字符,例如 É。

// Starting string.
var theString:String = "'Ö' is actually the Swedish word for 'island'";

var lowerCase : String = theString.toLowerCase();
var upperCount : int = 0;

for (var i:int = 0; i < theString.length; i++) {
    if (theString.charAt(i) != lowerCase.charAt(i)) {
        upperCount++;
    }
}

trace(upperCount); // prints 2
于 2012-07-19T13:47:38.300 回答
0

字符串中的每个字母都有一个与该字母对应的值:

var myString:String = "azAZ";
trace(myString.charCodeAt(0));
trace(myString.charCodeAt(1));
trace(myString.charCodeAt(2));
trace(myString.charCodeAt(3));

// Output is 97, 122, 65, 90

name.charCodeAt(x) 返回字符串中位置处字母的代码,从 0 开始。

从这个输出我们知道 a - z 的值范围是 97 到 122,我们也知道 A - Z 的值范围是 65 - 90。

有了这个,我们现在可以创建一个 For 循环来查找大写字母:

var myString:String = "This is The String";
var tally:int = 0;


for (var i:int = 0; i < myString.length; i++)
{
    if (myString.charCodeAt(i) >= 65 && myString.charCodeAt(i) <= 95)
    {
        tally += 1;
    }
}

trace(tally);
// Output is 3.

变量“tally”用于跟踪找到的大写字母的数量。在 For 循环中,我们正在查看它正在分析的当前字母的值是否在值 65 和 90 之间。如果是,它会将 1 加到计数中,然后在 For 循环结束时跟踪总数。

于 2012-07-18T01:51:15.710 回答
0

为什么要简洁?我说,处理能力是被使用的。所以:

const VALUE_0:uint = 0;
const VALUE_1:uint = 1;

var ltrs:String = "This is JUST some random TexT.  How many Caps?";

var cnt:int = 0;

for(var i:int = 0; i < ltrs.length; i++){
    cnt += processLetter(ltrs.substr(i,1));
}

trace("Total capital letters: " + cnt);

function processLetter(char:String):int{
    var asc:int = char.charCodeAt(0);
    if(asc >= Keyboard.A && asc <= Keyboard.Z){
        return VALUE_1;
    }
    return VALUE_0;
}

// Heh heh!
于 2012-07-18T22:50:25.217 回答