テキスト:文字
Sample:文字列操作
テキスト、文字列操作のサンプルです。
- セルアニメでよく使う[秒+コマ]という形式でTimeを表示するExpressionです。
- まずGlobal objectのtimeToTimecode( ) メソッドで現在のTimeを取得します。
- このメソッドの返り値はStringです。変数 fullTimeに代入します。
fullTime=timeToTimecode(t = time + thisComp.displayStartTime, timecodeBase = 24, isDuration = false)
- 結果 00:00:05:12
- この様になります。次に後半の[秒:コマ]の部分だけを抜き出します。
sec=fullTime.substring(6,8)
- substring()でなくてsubstr( )を使う方法だと次のようになります。
koma=fullTime.substr(9,2)
- そして秒とコマを ”+” でつなぎます。
sec + "+" + koma
- 結果
- 05+12
- 別の方法として、split( )を使うことも出来ます。
- split( )を使うと 00:00:05:12が[時]・[分]・[秒]・[フレーム]それぞれに分けて配列に入ります。
- 秒とコマがそれぞれ配列の[2]と[3]に入っているのでそれを取り出し、つなぎ合わせます。
sec=fullTime.split(":")[2];
koma=fullTime.split(":")[3];
sec + "+" + koma
- フッテージレイヤーの名前から拡張子を除いたファイル名だけを表示してみます。
- 例としてTest.mov というファイルを使います。
- まずレイヤー名を取得して変数 fullNameに代入します。
fullName=thisComp.layer("Test.mov").name;
- substring( ) を使いたいので、2つめの引数(ピリオドの位置)を得るためにlastIndexOf( )を使います。
- 返り値を変数[dot]に代入します。
dot=fullName.lastIndexOf(".");
- 最後にsubstring( ) を使ってピリオドの手前の文字までを抜き出します。
fullName.substring(0,dot)
- アルファベット[a-z]をランダムに表示するExpressionを作ってみます。
- 乱数を発生させるメソッドramdom( )は数字だけしか出しません。そこで 数字を文字に関連付けるためにキャラクターコード変換を使います。キャラクターコードとは文字や記号をコンピュータで扱うために、文字や記号一つ一つに割り当てられた固有の数字のことです。
- アルファベットの"a"はキャラクターコードでは[97]、"z"は[122]ですので97から122までの数字をランダムに発生させ、その数字を文字に変換すればOKです。
- randomの返り値を整数化するのにMath.roundで四捨五入します。
chCode=Math.round(random(97,122));
String.fromCharCode(chCode)
- 一文字では寂しいので10文字に増やしてみました。
- for ループを使って文字を10回発生させて文字列を作ります。
var sum="";
for ( i=1 ; i<=10 ; i++){
chCode=Math.round(random(97,122));
sum+=String.fromCharCode(chCode);
}
表示する数字の桁数を指定する。
-
「23」を「0023」にしたり、「2009.12098376」を「2009.121」と表示する方法です。
-
まずは小数点以下の桁数指定をするメソッド
toFixed( )
引数に小数点の後の桁数を指定。(省略すると0)
- 戻り値はnumberを表す文字列。数値ではありません。
- 最後の桁の値は丸められます。[例1]
- もしも小数部が無ければ"0"で埋められます。[例2]
[例1]
var num=123.456789;
num.toFixed(3);
- 結果:123.457
- 4桁目が四捨五入されています。
- 切捨てにしたい場合は1000倍して整数化してから元に戻すために1000で割ります。
var num=123.456789;
Math.floor(num*1000)/1000
- 結果:123.456
[例2]
var num=1.23;
num.toFixed(6);
- 結果:1.230000
整数部の桁揃え
カット番号の桁数を揃えたい、とか
- 例えば「2」を4桁の「0002」 にする。
var num=2;
while (num.length<4){
num="0"+num
}
この場合、ただ文字数を数えているだけなので元になる数字が整数であることが条件です。
※整数と小数点以下を分ける
var num=123.456
var int=num.split(".")[0]; //整数部
var deci=num.sptit(".")[1]; //小数部
toExponential( )
- 指数表記:
- 小数点前は 1 桁
- 小数点の後は指定された桁で切り捨て。
[例1]
var num=77.1234;
num.toExponential()
- 結果:7.71234e+1
toPrecision( )
- 有効桁数指定
- 指定された桁で概数化された、固定小数点数、指数表記で表した文字列。
[例1]
var num = 5.123456;
num.toPrecision(4)
- 結果:5.123