如何使用flash as3计算字符串中的大写字母数?
例如
var thestring = "This is The String";
应该返回int 3
谢谢
答案 0 :(得分:11)
// 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
答案 1 :(得分: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
答案 2 :(得分: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循环结束时跟踪总量。
答案 3 :(得分: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!