Processingにおける文字列の処理法を紹介します。Processingでは文字は utf-8 と呼ばれるコードで記録されます。これは、英数字は 1バイトで表現しますが、多くの漢字は3-4バイトで表現されます。文字列に対しては、+ 演算で文字列を「つなぐ」ことができます。また、文字列をグラフィックスとしてフォントやサイズを指定して表示することもできます。
char c1='漢'; println(c1); char sa[]={'漢','字'};挿入や削除などの文字処理で長さが変化するため配列では処理が厄介で、次の String を利用します。
String st="漢字"; println(st); st = new String(sa); println(st);String には、他に多くの機能が用意されています。文字列や String 型の変数に記録された文字列は + 演算で文字の接続ができます。また、文字列と数値型変数を + 演算すると数値は文字列に変換されて + 演算されます。
//文字列を加える String kyou="明日"; String tenki="晴れるか"; kyou = kyou + tenki; println(kyou+":"+kyou.length()); int it=120; println(kyou + ":"+ it ); println(tenki.equals("晴れるか")); println(tenki == "明日晴れるか"); ///結果 明日晴れるか:6 明日晴れるか:120 true falsecharAt(整数) で文字列から「指定した番号の文字」を取り出すことができます。先頭の文字は第 0 番の文字になります。substring(2,4) では 文字列から「指定した番号の範囲の文字列」を抜き出すことができます。indexOf(文字列)では指定した文字列を検索し、存在する場合先頭の文字の番号を返し、存在しない場合 -1 を返します。
//1文字取出し char c2 = kyou.charAt(1); println(c2); //文字列取出し println(kyou.substring(2,4)); //文字列検索 println(kyou.indexOf("晴れる")); ///結果 日 晴れ 2
String name[]={"愛知","岐阜","三重","静岡"}; int pop[]={7410,2080,1854,3765}; int i,jk=-1; String ken="三重"; for (i=0;i<name.length;i++){ if(ken.equals(name[i])) {//一致チェック jk=pop[i]; break; } } if (jk>=0)println(jk); else println("見つかりません"); ///結果 1854途中で一致したら break で繰り返しを中断します。終了しても jk が -1 なら一致するものがなかったことになります。
text(文字列, x 座標, y座標);既定のフォントでは漢字を表示することは出来ません。textSize() で文字のサイズ、fill(色)で文字の色を指定できます。サイズの単位は画素になります。text() で最後に、幅と高さを追加すると、長い文字列を折り返して表示します。
void setup(){ size(150,180); noLoop(); } void draw(){ text("ABC",20,20); fill(200,0,0); textSize(16); text("ABC",20,50); fill(0,200,0); textSize(20); text("ABC",20,80); fill(200,200,200); rect(20,100,80,60); fill(0,0,0); text("ABCDEFGHIJK",20,100,80,60); }実行結果
PFont gfont; void setup() { size(80, 160); background(0); smooth(); //漢字を含むフォントを利用する gfont = loadFont("MS-Gothic-24.vlw"); textFont(gfont, 20); noStroke(); noLoop(); } void draw() { fill(128); rect(0, 0, width, height); fill(255, 255, 0); //横幅は2文字より狭くする text("おめでとう", 30, 20, 30, 350); }実行結果