Where The Streets Have No Name

자바스크립트로 만든 StringBuilder 본문

Developement/Web

자바스크립트로 만든 StringBuilder

highheat 2007. 5. 4. 12:22
출처 : http://blog.naver.com/tear230/100017622655


자바스크립트에서 문자열을 합치는 방법 글을 읽고 조금 변경해서 올려봅니다.


<script language="JavaScript">
<!--
var StringBuilder = function(){
    this.buffer = new Array(); 
}


//순서대로 문자열을 추가한다.
StringBuilder.prototype.Append = function( strValue ) {
        this.buffer[this.buffer.length] = strValue;
       // this.buffer.push( strValue ); //IE5.5 NS4
}


// 문자열의 형식을 지정해서 추가한다.
StringBuilder.prototype.AppendFormat = function()
{
    var count = arguments.length;
    if( count < 2 ) return "";
    var strValue = arguments[0];
    for(var i=1; i<count; i++)
          strValue = strValue.replace("{"+ (i-1) + "}", arguments[i] );
    this.buffer[this.buffer.length] = strValue;
}


// 해당하는 위치에 문자열을 추가한다. (문자위치가 아님);
StringBuilder.prototype.Insert = function( idx, strValue ) {
    this.buffer.splice( idx, 0, strValue );     //IE5.5 NS4
}


// 해당문자열을 새로운 문자열로 바꾼다.
// (배열방 단위로 바꾸므로 배열방 사이에 낀 문자열은 바꾸지 않음)

StringBuilder.prototype.Replace = function( from, to ) {
    for( var i=this.buffer.length-1; i>=0; i--)
        this.buffer[i] = this.buffer[i].replace(new RegExp(from, "g"), to); //IE4  NS3
}


// 문자열로 반환한다.
StringBuilder.prototype.ToString = function() {
        return this.buffer.join("");    //IE4 NS3
}

 

/* 테스트해봅시다! */
var sb = new StringBuilder();
sb.Append("Hello! 안녕하세요! <br>");
sb.AppendFormat("내이름은 {0}, 나이는 {1} <br>", "이세영", "28");
sb.Append("Hello!  HELLO! <br>");
sb.Insert(2, "**2번째줄에 넣으세요***<br>");
sb.Replace("Hello", "Hi");
document.write( sb.ToString() );

//-->
</script>