如何使用 flash as3 计算字符串中大写字母的数量?
例如
var thestring = "This is The String";
应该返回 int 3
谢谢
如何使用 flash as3 计算字符串中大写字母的数量?
例如
var thestring = "This is The String";
应该返回 int 3
谢谢
// 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
解决此问题的一种方法是将字符串转换为小写并计算受影响的字符。这意味着您不必指定要包含在“大写字母”类别中的字符,这并非易事。此方法支持重音字符,例如 É。
// 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
字符串中的每个字母都有一个与该字母对应的值:
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 循环结束时跟踪总数。
为什么要简洁?我说,处理能力是被使用的。所以:
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!