超言理論

特に益もない日記である

Javaのターミナルへの標準出力に色を付ける。

こういう感じね。
f:id:merry_san:20130201170821j:plain

ソースはこれ。

public static void main(String[] args) {

//文字色を変える
for(int i=0;i<8;i++)
	System.out.println("\u001b[00;3"+i+"m esc[00;3"+i+" \u001b[00m");
//背景色を変える
for(int i=0;i<8;i++)
	System.out.println("\u001b[00;4"+i+"m esc[00;4"+i+" \u001b[00m");	

}

色を変えているのは

"\u001b[00;3"+i+"m"

ここ、適当に色変更のためのエスケープシークエンスを送っています。
(参考:技なれど波高し LinuxのCUIプログラムの標準出力の文字の色を変える
ただ、参考のサイトだとbyte型をsystem.out.writeで書き出していてちょっとめんどくさいので、適当にbyte型のエスケープ文字をjavaのエスケープシークエンス¥uxxx(16進数の文字を出力)で復元しています。
そして文字色を元に戻す時は

"\u001b[00m"

簡単ですよね!私はこのサンプル作るのに結構時間かかりましたけど。


で、なんでこんなことをやっているのかと言うと、たまたまCUITwitterクライアント作っていて見た目を参考にしたearthquake.gemがそんな感じのことをやっていて、大変悩んで文字色を変えるってことをやったわけで。
いろいろ調べてみたけどムツカシイやり方で色を変えるサンプルしか見つからなくて、いろいろ悩んでやっと色を変えられたのでメモっておこうという感じ。
こういうの最初にやる人スゴいっすよね。


Copyright © 2012-2016 Masahiro MIZUKAMI All Rights Reserved.