じぶんメモ

プログラミングのメモ、日常のメモとか。

Javaでバイト数での空白埋め

空白埋めにはString.format("%10s", value)を使用すれば良いが、
String.format()はマルチバイトも1文字として認識するため、
固定長ファイル出力など、バイト数での空白埋めをするには個別で実装する必要がある。

以下文字をSJISとして扱った場合の空白埋め

public class Test{

     public static void main(String []args){
        String value = "テスト";
        value = fillUpSpace(value, 10);
        System.out.println(value);             //"テスト    "として出力される。
     }
 
     public static String fillUpSpace(String val, int num) {
        String fillUppedString = val; 
        int len = 0;

        try {
            // SJISでのサイズ取得 
            len = val.getBytes("sjis").length;

            if (num <= len) {
                // 引数の桁より少ない場合は引数の桁に切り捨てる
                fillUppedString = new String(val.getBytes("sjis"), 0, num, "sjis");
            } else {
                for(int i = 0 ; i < (num - len); i++) {
                    fillUppedString = fillUppedString + " ";
                }
            }
        } catch(Exception e) {
          return "";  
        }
        
        return fillUppedString;
     }
     
}