flash as3を使用して、文字列内の大文字の数をカウントするにはどうすればよいですか?
例えば
var thestring = "This is The String";
int3を返す必要があります
ありがとうございました
flash as3を使用して、文字列内の大文字の数をカウントするにはどうすればよいですか?
例えば
var thestring = "This is The String";
int3を返す必要があります
ありがとうございました
// 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 つの方法は、文字列を小文字に変換し、影響を受ける文字を数えることです。つまり、「大文字」のカテゴリに含める文字を指定する必要はありません。これは簡単ではありません。このメソッドは、É などのアクセント付き文字をサポートします。
// 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
なぜ簡潔にするのですか?つまり、処理能力は使用するために作られています。そう:
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!
文字列内の各文字には、その文字に対応する値があります。
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 ループが終了したときに合計金額を追跡します。