JScriptでC#風String.Format

JavaScriptを勉強し始めた頃に作成したユーティリティです。

C#ライクな文字整形機能を提供しまっす。

 

ずいぶん前に作ったので荒い実装です・・・

{0}とか引数で渡されるとたぶんおかしくなります。

 

使い方はC#のstring.Formatとほぼ同じです。

var text = String.Format("{0} {1:d2} {2:t#yyyy.MM.dd HH:mm:ss.fff}",

    "引数", 5, new Date());

 

みたいな感じです。

Dateオブジェクトの書式指定は「t#」に続けてフォーマットを書きます。

上の例では書いていませんが、右詰フォーマットや左詰フォーマット、

16進表記フォーマットもできます。

 

この機能はwscjsfwに含まれているので、

良ければ見てください。

 

 

 


var MONTH_LONG_ENG = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var MONTH_LONG_JPN = new Array("睦月", "如月", "弥生", "卯月", "皐月", "水無月", "文月", "葉月", "長月", "神無月", "霜月", "師走");
var MONTH_LONG_JPN2 = new Array("一月", "二月", "三生", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月");
var MONTH_SHORT_ENG = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
var MONTH_SHORT_JPN = new Array("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月");
var WEEK_LONG_ENG = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
var WEEK_LONG_JPN = new Array("日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日");
var WEEK_SHORT_ENG = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
var WEEK_SHORT_JPN = new Array("日", "月", "火", "水", "木", "金", "土");

// LocalLocation ---------------------------------------------------------------
var LocationSetting = function(){};
LocationSetting.prototype =
{
    LongMonthNames : MONTH_LONG_JPN,
    ShortMonthNames : MONTH_SHORT_JPN,
    LongWeekNames : WEEK_LONG_JPN,
    ShortWeekNames : WEEK_SHORT_JPN,
    DateFormat : "yyyy/MM/dd",
    DateTimeFormat : "yyyy/MM/dd HH:mm:ss"
}
var LocalLocation = new LocationSetting();
/**
 * フォーマット識別子基本クラス
 * カスタムフォーマットを定義する場合、
 * このクラスを継承し、
 * String.Formatsにオブジェクトを追加します。
 */
var BaseFormatter = function(){};
BaseFormatter.prototype =
{
    /**
     * フォーマットチェック用の正規表現を定義します
     */
    FormatRegExpString : "^.*$",
    /**
     * フォーマットチェックを実施します。
     * このメソッドは子クラスでオーバライドする必要はありません
     */
    CheckFormat : function(format)
    {
        var reg = new RegExp(this.FormatRegExpString);
        if(format.match(reg)) return true;
        return false;
    },
    /**
     * 指定されたフォーマット、値を受け取り
     * 変換後の文字列を返却します
     */
    Convert : function(format, value)
    {
        return value;
    }
}
/**
 * 自動フォーマット識別子クラス
 */
var AutoFormatter = function(){};
/**
 * 自動フォーマット
 */
AutoFormatter.Convert = function(value)
{
    try
    {
        switch(typeof value)
        {
            case "unknown":
                return "unknown";
            case "undefined":
                return "undefined";
            case "boolean":
                return String(value);
            case "string":
                return value;
            case "number":
                return String(value);
            case "function":
                var ret = "(function)=>[";
                for(var obj in value)
                {
                    ret += obj + ":" + this.Convert(value[obj]) + ",";
                }
                ret = ret.EndWith(",") ? ret.substring(0, ret.length - 1) : ret;
                ret += "]";
                return ret;
            case "object":
                var ret = "(object)=>[";
                for(var obj in value)
                {
                    ret += obj + ":" + this.Convert(value[obj]) + ",";
                }
                ret = ret.EndWith(",") ? ret.substring(0, ret.length - 1) : ret;
                ret += "]";
                return ret;
            default:
                return value;
        }
    }
    catch(ex)
    {
        if(typeof(Log)!="undefined") Log.WriteErrorSystem(ex, "オブジェクトはフォーマッタで処理できません。");
        throw ex;
    }
}
/**
 * 数字フォーマット識別子クラス
 */
var DigitFormatter = function(){};
DigitFormatter.prototype = new BaseFormatter();
DigitFormatter.prototype.FormatRegExpString = "^d\\d+$";
/**
 * 数字フォーマット
 */
DigitFormatter.prototype.Convert = function(format, value)
{
    try
    {
        var len = new Number(format.slice(1));

        if(value.length >= len)
        {
            return String(value);
        }
        else
        {
            var zero = String(Math.pow(10, len)).slice(1+String(value).length);
            return String(zero + String(value));
        }
    }
    catch(ex)
    {
        if(typeof(Log)!="undefined") Log.WriteErrorSystem(ex, "オブジェクトは数字フォーマッタで処理できません。");
        throw ex;
    }
}
/**
 * 16進数フォーマット識別子クラス
 */
var HexFormatter = function(){};
HexFormatter.prototype = new BaseFormatter();
HexFormatter.prototype.FormatRegExpString = "^[xX](\\d+)?$";
/**
 * 16進数フォーマット
 */
HexFormatter.prototype.Convert = function(format, value)
{
    try
    {
        var target = HexFormatter.HelperFunction(value);
        if(format.StartWith("X"))
        {
            target = target.ToUpper();
        }
        var len = 0;
        if(format.length > 1)
        {
            len= new Number(format.slice(1));
        }
        if(value.length >= len)
        {
            return String(target);
        }
        else
        {
            var zero = String(Math.pow(10, len)).slice(1+String(target).length);
            return String(zero + String(target));
        }
    }
    catch(ex)
    {
        if(typeof(Log)!="undefined") Log.WriteErrorSystem(ex, "オブジェクトは16進数フォーマッタで処理できません。");
        throw ex;
    }
}
HexFormatter.HelperFunction = function(){};
HexFormatter.HelperFunction = function(value)
{
    var ret = "";
    while(true)
    {
        var tar = value % 16;
        switch(tar)
        {
            case 10 : ret = "a" + ret; break;
            case 11 : ret = "b" + ret; break;
            case 12 : ret = "c" + ret; break;
            case 13 : ret = "d" + ret; break;
            case 14 : ret = "e" + ret; break;
            case 15 : ret = "f" + ret; break;
            default : ret = String(tar) + ret;
        }
        if(value < 16)
            break;
        value = Number((value - tar) / 16);
    }
    return ret;
}

/**
 * 右詰フォーマット識別子クラス
 */
var FillRightFormatter = function(){};
FillRightFormatter.prototype = new BaseFormatter();
FillRightFormatter.prototype.FormatRegExpString = "^r\\d+\\[.\\]$";
/**
 * 右詰フォーマット
 */
FillRightFormatter.prototype.Convert = function(format, value)
{
    try
    {
        var len = new Number(format.substring(1,format.length-3));
        var fillValue = String(format.substring(format.length-2,format.length-1));
        var ret = String(value);
        for(i=0 ; i<len ; i++)
        {
            ret += fillValue;
        }

        // 切捨て
        return ret.substring(0, len);
    }
    catch(ex)
    {
        if(typeof(Log)!="undefined") Log.WriteErrorSystem(ex, "オブジェクトは右詰フォーマッタで処理できません。");
        throw ex;
    }
}
/**
 * 左詰フォーマット識別子クラス
 */
var FillLeftFormatter = function(){};
FillLeftFormatter.prototype = new BaseFormatter();
FillLeftFormatter.prototype.FormatRegExpString = "^l\\d+\\[.\\]$";
/**
 * 左詰フォーマット
 */
FillLeftFormatter.prototype.Convert = function(format, value)
{
    try
    {
        var len = new Number(format.substring(1,format.length-3));
        var fillValue = String(format.substring(format.length-2,format.length-1));
        var ret = String(value);
        for(i=0 ; i<len ; i++)
        {
            ret = fillValue + ret;
        }

        // 切捨て
        return ret.substring(ret.length-len, ret.length);
    }
    catch(ex)
    {
        if(typeof(Log)!="undefined") Log.WriteErrorSystem(ex, "オブジェクトは左詰フォーマッタで処理できません。");
        throw ex;
    }
}
/**
 * 日時フォーマット識別子クラス
 */
var DateFormatter = function(){};
DateFormatter.prototype = new BaseFormatter();
DateFormatter.prototype.FormatRegExpString = "^t#.+$";
/**
 * 日時フォーマット
 */
DateFormatter.prototype.Convert = function(format, value)
{
    try
    {
        var hour = value.getHours();
        var ret = String(format.slice(2));
        ret = ret.replace(/f+/g, function()
        {
            var msFormat = "{0:r" + String(arguments[0].length) + "[0]}";
            return String.Format(msFormat, value.getMilliseconds());
        });
        ret = ret.replace(/F+/g, function()
        {
            var ms = String(value.getMilliseconds());
            if(ms.length>arguments[0].length)
            {
                return ms.substring(0, arguments[0].length);
            }
            else
            {
                return ms;
            }
        });
        ret = ret.replace(/yyyy/g, value.getFullYear());
        ret = ret.replace(/yy/g, String(value.getFullYear()).slice(2));
        ret = ret.replace(/MMMM/g, LocalLocation.LongMonthNames[value.getMonth()]);
        ret = ret.replace(/MMM/g, LocalLocation.ShortMonthNames[value.getMonth()]);
        ret = ret.replace(/MM/g, String.Format("{0:d2}", value.getMonth()+1));
        ret = ret.replace(/M/g, value.getMonth()+1);
        ret = ret.replace(/dddd/g, LocalLocation.LongWeekNames[value.getDay()]);
        ret = ret.replace(/ddd/g, LocalLocation.ShortWeekNames[value.getDay()]);
        ret = ret.replace(/dd/g, String.Format("{0:d2}", value.getDate()));
        ret = ret.replace(/d/g, value.getDate());
        ret = ret.replace(/HH/g, String.Format("{0:d2}", hour));
        ret = ret.replace(/H/g, hour);
        ret = ret.replace(/hh/g, String.Format("{0:d2}", hour%12));
        ret = ret.replace(/h/g, hour%12);
        ret = ret.replace(/mm/g,String.Format("{0:d2}",value.getMinutes()));
        ret = ret.replace(/m/g,value.getMinutes());
        ret = ret.replace(/ss/g,String.Format("{0:d2}",value.getSeconds()));
        ret = ret.replace(/s/g,value.getSeconds());
        ret = ret.replace(/tt/g,(hour<12?"AM":"PM"));
        ret = ret.replace(/t/g, (hour<12?"A":"P"));

        return ret;
    }
    catch(ex)
    {
        if(typeof(Log)!="undefined") Log.WriteErrorSystem(ex, "オブジェクトは日時フォーマッタで処理できません。");
        throw ex;
    }

}
// 書式整形対応フォーマット一覧
String.Formats = new Array(
    new DigitFormatter(),                // 数字フォーマット
    new HexFormatter(),                    // 16進数フォーマット
    new DateFormatter(),                // 日付フォーマット
    new FillRightFormatter(),            // 右詰フォーマット
    new FillLeftFormatter()                // 左詰フォーマット
);
/**
 * 書式整形
 */
String.Format = function()
{
    try
    {
        var args = [];
        for(var i = 0; i < arguments.length; i++) args[i] = arguments[i];
        var format = args.shift();
        
        var reg = /\{((\d)|([1-9]\d+))(:.+?)?\}/g;
        var reg2 = new RegExp(":[^\\}]+");
        var argReg = new RegExp("\\{((\\d)|([1-9]\\d+))");

        var ma = format.match(reg);
        if(ma)
        {
            for(i=0;i<ma.length;i++)
            {
                var ma2 = ma[i].match(reg2);
                var argIndex = Number(ma[i].match(argReg)[0].slice(1));
                var rep = args[argIndex];

                if(ma2)
                {
                    var formatString = ma2[0].slice(1);
                    
                    // 書式整形
                    for(j=0; j<String.Formats.length ;j++)
                    {
                        if(String.Formats[j].CheckFormat(formatString))
                        {
                            // 書式を適用
                            rep = String.Formats[j].Convert(formatString, rep==null||typeof(rep)=="undefined"?"":rep);
                        }
                    }
                }
                else
                {
                    // String関数で変換したものがObjectとして出力される為、削除
                    //rep = AutoFormatter.Convert(rep);
                }
                format = format.replace(ma[i], rep);
            }
        }
        return format;
    }
    catch(ex)
    {
        throw new Error("書式整形できませんでした。\r\n" + ex.description);
    }
}

String.Format.zip
String.Format.zip
zip ( 圧縮 ) ファイル 2.9 KB

 

以下、コード

// 月、曜日テーブル
var MONTH_LONG_ENG = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var MONTH_LONG_JPN = new Array("睦月", "如月", "弥生", "卯月", "皐月", "水無月", "文月", "葉月", "長月", "神無月", "霜月", "師走");
var MONTH_LONG_JPN2 = new Array("一月", "二月", "三生", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月");
var MONTH_SHORT_ENG = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
var MONTH_SHORT_JPN = new Array("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月");
var WEEK_LONG_ENG = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
var WEEK_LONG_JPN = new Array("日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日");
var WEEK_SHORT_ENG = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
var WEEK_SHORT_JPN = new Array("日", "月", "火", "水", "木", "金", "土");

// LocalLocation ---------------------------------------------------------------
var LocationSetting = function(){};
LocationSetting.prototype =
{
    LongMonthNames : MONTH_LONG_JPN,
    ShortMonthNames : MONTH_SHORT_JPN,
    LongWeekNames : WEEK_LONG_JPN,
    ShortWeekNames : WEEK_SHORT_JPN,
    DateFormat : "yyyy/MM/dd",
    DateTimeFormat : "yyyy/MM/dd HH:mm:ss"
}
var LocalLocation = new LocationSetting();
/**
 * フォーマット識別子基本クラス
 * カスタムフォーマットを定義する場合、
 * このクラスを継承し、
 * String.Formatsにオブジェクトを追加します。
 */
var BaseFormatter = function(){};
BaseFormatter.prototype =
{
    /**
     * フォーマットチェック用の正規表現を定義します
     */
    FormatRegExpString : "^.*$",
    /**
     * フォーマットチェックを実施します。
     * このメソッドは子クラスでオーバライドする必要はありません
     */
    CheckFormat : function(format)
    {
        var reg = new RegExp(this.FormatRegExpString);
        if(format.match(reg)) return true;
        return false;
    },
    /**
     * 指定されたフォーマット、値を受け取り
     * 変換後の文字列を返却します
     */
    Convert : function(format, value)
    {
        return value;
    }
}
/**
 * 自動フォーマット識別子クラス
 */
var AutoFormatter = function(){};
/**
 * 自動フォーマット
 */
AutoFormatter.Convert = function(value)
{
    try
    {
        switch(typeof value)
        {
            case "unknown":
                return "unknown";
            case "undefined":
                return "undefined";
            case "boolean":
                return String(value);
            case "string":
                return value;
            case "number":
                return String(value);
            case "function":
                var ret = "(function)=>[";
                for(var obj in value)
                {
                    ret += obj + ":" + this.Convert(value[obj]) + ",";
                }
                ret = ret.EndWith(",") ? ret.substring(0, ret.length - 1) : ret;
                ret += "]";
                return ret;
            case "object":
                var ret = "(object)=>[";
                for(var obj in value)
                {
                    ret += obj + ":" + this.Convert(value[obj]) + ",";
                }
                ret = ret.EndWith(",") ? ret.substring(0, ret.length - 1) : ret;
                ret += "]";
                return ret;
            default:
                return value;
        }
    }
    catch(ex)
    {
        if(typeof(Log)!="undefined") Log.WriteErrorSystem(ex, "オブジェクトはフォーマッタで処理できません。");
        throw ex;
    }
}
/**
 * 数字フォーマット識別子クラス
 */
var DigitFormatter = function(){};
DigitFormatter.prototype = new BaseFormatter();
DigitFormatter.prototype.FormatRegExpString = "^d\\d+$";
/**
 * 数字フォーマット
 */
DigitFormatter.prototype.Convert = function(format, value)
{
    try
    {
        var len = new Number(format.slice(1));

        if(value.length >= len)
        {
            return String(value);
        }
        else
        {
            var zero = String(Math.pow(10, len)).slice(1+String(value).length);
            return String(zero + String(value));
        }
    }
    catch(ex)
    {
        if(typeof(Log)!="undefined") Log.WriteErrorSystem(ex, "オブジェクトは数字フォーマッタで処理できません。");
        throw ex;
    }
}
/**
 * 16進数フォーマット識別子クラス
 */
var HexFormatter = function(){};
HexFormatter.prototype = new BaseFormatter();
HexFormatter.prototype.FormatRegExpString = "^[xX](\\d+)?$";
/**
 * 16進数フォーマット
 */
HexFormatter.prototype.Convert = function(format, value)
{
    try
    {
        var target = HexFormatter.HelperFunction(value);
        if(format.StartWith("X"))
        {
            target = target.ToUpper();
        }
        var len = 0;
        if(format.length > 1)
        {
            len= new Number(format.slice(1));
        }
        if(value.length >= len)
        {
            return String(target);
        }
        else
        {
            var zero = String(Math.pow(10, len)).slice(1+String(target).length);
            return String(zero + String(target));
        }
    }
    catch(ex)
    {
        if(typeof(Log)!="undefined") Log.WriteErrorSystem(ex, "オブジェクトは16進数フォーマッタで処理できません。");
        throw ex;
    }
}
HexFormatter.HelperFunction = function(){};
HexFormatter.HelperFunction = function(value)
{
    var ret = "";
    while(true)
    {
        var tar = value % 16;
        switch(tar)
        {
            case 10 : ret = "a" + ret; break;
            case 11 : ret = "b" + ret; break;
            case 12 : ret = "c" + ret; break;
            case 13 : ret = "d" + ret; break;
            case 14 : ret = "e" + ret; break;
            case 15 : ret = "f" + ret; break;
            default : ret = String(tar) + ret;
        }
        if(value < 16)
            break;
        value = Number((value - tar) / 16);
    }
    return ret;
}

/**
 * 右詰フォーマット識別子クラス
 */
var FillRightFormatter = function(){};
FillRightFormatter.prototype = new BaseFormatter();
FillRightFormatter.prototype.FormatRegExpString = "^r\\d+\\[.\\]$";
/**
 * 右詰フォーマット
 */
FillRightFormatter.prototype.Convert = function(format, value)
{
    try
    {
        var len = new Number(format.substring(1,format.length-3));
        var fillValue = String(format.substring(format.length-2,format.length-1));
        var ret = String(value);
        for(i=0 ; i<len ; i++)
        {
            ret += fillValue;
        }

        // 切捨て
        return ret.substring(0, len);
    }
    catch(ex)
    {
        if(typeof(Log)!="undefined") Log.WriteErrorSystem(ex, "オブジェクトは右詰フォーマッタで処理できません。");
        throw ex;
    }
}
/**
 * 左詰フォーマット識別子クラス
 */
var FillLeftFormatter = function(){};
FillLeftFormatter.prototype = new BaseFormatter();
FillLeftFormatter.prototype.FormatRegExpString = "^l\\d+\\[.\\]$";
/**
 * 左詰フォーマット
 */
FillLeftFormatter.prototype.Convert = function(format, value)
{
    try
    {
        var len = new Number(format.substring(1,format.length-3));
        var fillValue = String(format.substring(format.length-2,format.length-1));
        var ret = String(value);
        for(i=0 ; i<len ; i++)
        {
            ret = fillValue + ret;
        }

        // 切捨て
        return ret.substring(ret.length-len, ret.length);
    }
    catch(ex)
    {
        if(typeof(Log)!="undefined") Log.WriteErrorSystem(ex, "オブジェクトは左詰フォーマッタで処理できません。");
        throw ex;
    }
}
/**
 * 日時フォーマット識別子クラス
 */
var DateFormatter = function(){};
DateFormatter.prototype = new BaseFormatter();
DateFormatter.prototype.FormatRegExpString = "^t#.+$";
/**
 * 日時フォーマット
 */
DateFormatter.prototype.Convert = function(format, value)
{
    try
    {
        var hour = value.getHours();
        var ret = String(format.slice(2));
        ret = ret.replace(/f+/g, function()
        {
            var msFormat = "{0:r" + String(arguments[0].length) + "[0]}";
            return String.Format(msFormat, value.getMilliseconds());
        });
        ret = ret.replace(/F+/g, function()
        {
            var ms = String(value.getMilliseconds());
            if(ms.length>arguments[0].length)
            {
                return ms.substring(0, arguments[0].length);
            }
            else
            {
                return ms;
            }
        });
        ret = ret.replace(/yyyy/g, value.getFullYear());
        ret = ret.replace(/yy/g, String(value.getFullYear()).slice(2));
        ret = ret.replace(/MMMM/g, LocalLocation.LongMonthNames[value.getMonth()]);
        ret = ret.replace(/MMM/g, LocalLocation.ShortMonthNames[value.getMonth()]);
        ret = ret.replace(/MM/g, String.Format("{0:d2}", value.getMonth()+1));
        ret = ret.replace(/M/g, value.getMonth()+1);
        ret = ret.replace(/dddd/g, LocalLocation.LongWeekNames[value.getDay()]);
        ret = ret.replace(/ddd/g, LocalLocation.ShortWeekNames[value.getDay()]);
        ret = ret.replace(/dd/g, String.Format("{0:d2}", value.getDate()));
        ret = ret.replace(/d/g, value.getDate());
        ret = ret.replace(/HH/g, String.Format("{0:d2}", hour));
        ret = ret.replace(/H/g, hour);
        ret = ret.replace(/hh/g, String.Format("{0:d2}", hour%12));
        ret = ret.replace(/h/g, hour%12);
        ret = ret.replace(/mm/g,String.Format("{0:d2}",value.getMinutes()));
        ret = ret.replace(/m/g,value.getMinutes());
        ret = ret.replace(/ss/g,String.Format("{0:d2}",value.getSeconds()));
        ret = ret.replace(/s/g,value.getSeconds());
        ret = ret.replace(/tt/g,(hour<12?"AM":"PM"));
        ret = ret.replace(/t/g, (hour<12?"A":"P"));

        return ret;
    }
    catch(ex)
    {
        if(typeof(Log)!="undefined") Log.WriteErrorSystem(ex, "オブジェクトは日時フォーマッタで処理できません。");
        throw ex;
    }

}
// 書式整形対応フォーマット一覧
String.Formats = new Array(
    new DigitFormatter(),                // 数字フォーマット
    new HexFormatter(),                    // 16進数フォーマット
    new DateFormatter(),                // 日付フォーマット
    new FillRightFormatter(),            // 右詰フォーマット
    new FillLeftFormatter()                // 左詰フォーマット
);
/**
 * 書式整形
 */
String.Format = function()
{
    try
    {
        var args = [];
        for(var i = 0; i < arguments.length; i++) args[i] = arguments[i];
        var format = args.shift();
        
        var reg = /\{((\d)|([1-9]\d+))(:.+?)?\}/g;
        var reg2 = new RegExp(":[^\\}]+");
        var argReg = new RegExp("\\{((\\d)|([1-9]\\d+))");

        var ma = format.match(reg);
        if(ma)
        {
            for(i=0;i<ma.length;i++)
            {
                var ma2 = ma[i].match(reg2);
                var argIndex = Number(ma[i].match(argReg)[0].slice(1));
                var rep = args[argIndex];

                if(ma2)
                {
                    var formatString = ma2[0].slice(1);
                    
                    // 書式整形
                    for(j=0; j<String.Formats.length ;j++)
                    {
                        if(String.Formats[j].CheckFormat(formatString))
                        {
                            // 書式を適用
                            rep = String.Formats[j].Convert(formatString, rep==null||typeof(rep)=="undefined"?"":rep);
                        }
                    }
                }
                else
                {
                    // String関数で変換したものがObjectとして出力される為、削除
                    //rep = AutoFormatter.Convert(rep);
                }
                format = format.replace(ma[i], rep);
            }
        }
        return format;
    }
    catch(ex)
    {
        throw new Error("書式整形できませんでした。\r\n" + ex.description);
    }
}

2010.09.19