プロが教えるわが家の防犯対策術!

FLASH8(Win-XP)使用者です。
ActionScriptで、ある一文字が全角なのか半角(1バイト文字)なのかを判別する方法はあるのでしょうか?
PHPとかだと文字をバイト数で数えたりできるようですがActionScriptはそういう機能はないですよね?
お詳しい方、よろしくお願いいたします。

A 回答 (1件)

そういう関数(strwidth ですか?)がないというだけで,


おそらくいくつか方法はあると思いますが,思いついた1例です。

簡単な例↓
------------------------------------------------
// 変数 S を任意の文字列とします
S = "a";
// 任意の文字列の 1 番目(0) の16ビット整数を N に代入
N = S.charCodeAt(0);
// N による条件分岐
if (N<=255) {
trace("1バイト文字("+N+")");
} else {
trace("2バイト文字("+N+")");
}
------------------------------------------------

上の考え方を基に,
文字列のバイト数をカウントする関数を作成したのが次の例です。

---------------------------------------------
// ユーザ定義関数 getStrWidth の定義 引数S
function getStrWidth(S) {
// バイト数を表す変数 N の初期化
N = 0;
// Sの文字数分ループ
for (i=0; i<S.length; i++) {
// 条件分岐
if (S.charCodeAt(i)<=255) {
N += 1;
} else {
N += 2;
}
}
trace(N);
}
// ユーザ定義関数 getStrWidth の実行
getStrWidth("3(1)ssSS");
/* trace される数の検算
3:1バイト, (:1バイト , 1:2バイト, ):1バイト
s:2バイト, s:1バイト, S:2バイト, S:1バイト
1+1+2+1+2+1+2+1=11 →11 が trace される
*/
---------------------------------------------

うまく行くと思うのですが...。
TAB とか 改行コード とかのエスケープ文字関連のものが入ったら,ひょっとしたらうまく行かないかもしれません。
    • good
    • 0
この回答へのお礼

なるほど!
charCodeAt が255以下なら1バイト文字なのですね。
「\n」や「\t」も試しましたが1バイトになるようです。
ありがとうございました。

お礼日時:2007/09/19 00:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!