GotDotNet User Sample: C# StringBuilder Class Simulated in Javascript
Posted on 2006-11-17 14:50 AllenWang.NET 阅读(443) 评论(0) 收藏 举报
Simulates the C# StringBuilder Class in Javascript. Zip file includes a compressed version, speed test and fully commented sourcecode.
http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=cdd24380-e7d7-467f-8462-59c56d0b7ad2
有源代码,并且还有压缩过的源代码
 /*
/*
 ##################### DO NOT MODIFY THIS HEADER #####################
    ##################### DO NOT MODIFY THIS HEADER #####################
 # Title: StringBuilder Class                                        #
    # Title: StringBuilder Class                                        #
 # Description: Simulates the C# StringBuilder Class in Javascript.  #
    # Description: Simulates the C# StringBuilder Class in Javascript.  #
 # Website: www.codevendor.com                                       #
    # Website: www.codevendor.com                                       #
 # Author: Adam Smith                                                #
    # Author: Adam Smith                                                #
 # Email: ibulwark@hotmail.com                                       #
    # Email: ibulwark@hotmail.com                                       #
 # Date: November 12, 2006                                           #
    # Date: November 12, 2006                                           #
 #####################################################################
    #####################################################################
 */
*/

 // Simulates the C# StringBuilder Class in Javascript.
// Simulates the C# StringBuilder Class in Javascript.
 // Parameter["stringToAdd"] - The string to add.
// Parameter["stringToAdd"] - The string to add. 
 StringBuilder = function(stringToAdd)
StringBuilder = function(stringToAdd)
 {
{    
 var h = new Array();
    var h = new Array();
 if(stringToAdd){h[0] = stringToAdd;}
    if(stringToAdd){h[0] = stringToAdd;} 
 this.Append = Append;
    this.Append = Append;
 this.AppendLine = AppendLine;
    this.AppendLine = AppendLine;
 this.ToString = ToString;
    this.ToString = ToString;
 this.Clear = Clear;
    this.Clear = Clear;
 this.Length = Length;
    this.Length = Length;
 this.Replace = Replace;
    this.Replace = Replace;
 this.Remove = Remove;
    this.Remove = Remove;
 this.Insert = Insert;
    this.Insert = Insert;
 this.GetType = GetType;
    this.GetType = GetType;      
 
    
 // Appends the string representation of a specified object to the end of this instance.
    // Appends the string representation of a specified object to the end of this instance.
 // Parameter["stringToAppend"] - The string to append.
    // Parameter["stringToAppend"] - The string to append. 
 function Append(stringToAppend)
    function Append(stringToAppend)
 {
    {
 h[h.length] = stringToAppend;
        h[h.length] = stringToAppend;
 }
    } 

 // Appends the string representation of a specified object to the end of this instance with a carriage return and line feed.
    // Appends the string representation of a specified object to the end of this instance with a carriage return and line feed.
 // Parameter["stringToAppend"] - The string to append.
    // Parameter["stringToAppend"] - The string to append. 
 function AppendLine(stringToAppend)
    function AppendLine(stringToAppend)
 {
    {
 h[h.length] = stringToAppend;
        h[h.length] = stringToAppend;
 h[h.length] = "\r\n";
        h[h.length] = "\r\n";
 }
    } 
 
  
 // Converts a StringBuilder to a String.
    // Converts a StringBuilder to a String.
 function ToString()
    function ToString()
 {
    {
 if(!h){ return ""; }
        if(!h){ return ""; }
 if(h.length<2){ return (h[0])?h[0]:""; }
        if(h.length<2){ return (h[0])?h[0]:""; }
 var a = h.join('');
        var a = h.join('');
 h = new Array();
        h = new Array();
 h[0] = a;
        h[0] = a;
 return a;
        return a;
 }
    }

 // Clears the StringBuilder
    // Clears the StringBuilder
 function Clear()
    function Clear()
 {
    {
 h = new Array();
        h = new Array();
 }
    }

 // Gets the StringBuilder Length
    // Gets the StringBuilder Length
 function Length()
    function Length()
 {
    {
 if(!h){return 0;}
        if(!h){return 0;}
 if(h.length<2){ return (h[0])?h[0].length:0; }
        if(h.length<2){ return (h[0])?h[0].length:0; }
 var a = h.join('');
        var a = h.join('');
 h = new Array();
        h = new Array();
 h[0] = a;
        h[0] = a;
 return a.length;
        return a.length;
 }
    }

 // Replaces all occurrences of a specified character or string in this instance with another specified character or string.
    // Replaces all occurrences of a specified character or string in this instance with another specified character or string.
 // Parameter["oldValue"] - The string to replace.
    // Parameter["oldValue"] - The string to replace. 
 // Parameter["newValue"] - The string that replaces oldValue.
    // Parameter["newValue"] - The string that replaces oldValue. 
 // Parameter["caseSensitive"] - True or false for case replace.
    // Parameter["caseSensitive"] - True or false for case replace.
 // Return Value - A reference to this instance with all instances of oldValue replaced by newValue.
    // Return Value - A reference to this instance with all instances of oldValue replaced by newValue.
 function Replace(oldValue, newValue, caseSensitive)
    function Replace(oldValue, newValue, caseSensitive)
 {
    {
 var r = new RegExp(oldValue,(caseSensitive==true)?'g':'gi');
        var r = new RegExp(oldValue,(caseSensitive==true)?'g':'gi');
 var b = h.join('').replace(r, newValue);
        var b = h.join('').replace(r, newValue);
 h = new Array();
        h = new Array();
 h[0] = b;
        h[0] = b;
 return this;
        return this;
 }
    }

 // Removes the specified range of characters from this instance.
    // Removes the specified range of characters from this instance.
 // Parameter["startIndex"] - The position where removal begins.
    // Parameter["startIndex"] - The position where removal begins. 
 // Parameter["length"] - The number of characters to remove.
    // Parameter["length"] - The number of characters to remove.
 // Return Value - A reference to this instance after the excise operation has occurred.
    // Return Value - A reference to this instance after the excise operation has occurred.
 function Remove(startIndex, length)
    function Remove(startIndex, length)
 {
    {       
 var s = h.join('');
        var s = h.join('');
 h = new Array();
        h = new Array();
 
    
 if(startIndex<1){h[0]=s.substring(length, s.length);}
        if(startIndex<1){h[0]=s.substring(length, s.length);}
 if(startIndex>s.length){h[0]=s;}
        if(startIndex>s.length){h[0]=s;}
 else
        else
 {
        {
 h[0]=s.substring(0, startIndex);
            h[0]=s.substring(0, startIndex);  
 h[1]=s.substring(startIndex+length, s.length);
            h[1]=s.substring(startIndex+length, s.length);
 }
        }
 
    
 return this;
        return this;
 }
    }

 // Inserts the string representation of a specified object into this instance at a specified character position.
    // Inserts the string representation of a specified object into this instance at a specified character position.
 // Parameter["index"] - The position at which to insert.
    // Parameter["index"] - The position at which to insert.
 // Parameter["value"] - The string to insert.
    // Parameter["value"] - The string to insert. 
 // Return Value - A reference to this instance after the insert operation has occurred.
    // Return Value - A reference to this instance after the insert operation has occurred.
 function Insert(index, value)
    function Insert(index, value)
 {
    {
 var s = h.join('');
        var s = h.join('');
 h = new Array();
        h = new Array();
 
    
 if(index<1){h[0]=value; h[1]=s;}
        if(index<1){h[0]=value; h[1]=s;}
 if(index>=s.length){h[0]=s; h[1]=value;}
        if(index>=s.length){h[0]=s; h[1]=value;}
 else
        else
 {
        {
 h[0]=s.substring(0, index);
            h[0]=s.substring(0, index); 
 h[1]=value;
            h[1]=value; 
 h[2]=s.substring(index, s.length);
            h[2]=s.substring(index, s.length);
 }
        }
 
    
 return this;
        return this;
 }
    }

 // Gets the type
    // Gets the type
 function GetType()
    function GetType()
 {
    {
 return "StringBuilder";
        return "StringBuilder";
 }
    }
 };
};
 StringBuilder=function(A){var h=new Array();if(A){h[0]=A;}this.Append=Append;this.AppendLine=AppendLine;this.ToString=ToString;this.Clear=Clear;this.Length=Length;this.Replace=Replace;this.Remove=Remove;this.Insert=Insert;this.GetType=GetType;function Append(s){h[h.length]=s;}function AppendLine(s){h[h.length]=s;h[h.length]="\r\n";}function ToString(){if(!h){return "";}if(h.length<2){return (h[0])?h[0]:"";}var a=h.join('');h=new Array();h[0]=a;return a;}function Clear(){h=new Array();}function Length(){if(!h){return 0;}if(h.length<2){return (h[0])?h[0].length:0;}var a=h.join('');h=new Array();h[0]=a;return a.length;}function Replace(o,n,c){var r=new RegExp(o,(c==true)?'g':'gi');var b=h.join('').replace(r,n);h=new Array();h[0]=b;return this;}function Remove(i,l){var s=h.join('');h=new Array();if(i<1){h[0]=s.substring(l,s.length);}if(i>s.length){h[0]=s;}else{h[0]=s.substring(0,i);h[1]=s.substring(i+l,s.length);}return this;}function Insert(i,v){var s=h.join('');h=new Array();if(i<1){h[0]=v;h[1]=s;}if(i>=s.length){h[0]=s;h[1]=v;}else{h[0]=s.substring(0,i);h[1]=v;h[2]=s.substring(i,s.length);}return this;}function GetType(){return "StringBuilder";}};
StringBuilder=function(A){var h=new Array();if(A){h[0]=A;}this.Append=Append;this.AppendLine=AppendLine;this.ToString=ToString;this.Clear=Clear;this.Length=Length;this.Replace=Replace;this.Remove=Remove;this.Insert=Insert;this.GetType=GetType;function Append(s){h[h.length]=s;}function AppendLine(s){h[h.length]=s;h[h.length]="\r\n";}function ToString(){if(!h){return "";}if(h.length<2){return (h[0])?h[0]:"";}var a=h.join('');h=new Array();h[0]=a;return a;}function Clear(){h=new Array();}function Length(){if(!h){return 0;}if(h.length<2){return (h[0])?h[0].length:0;}var a=h.join('');h=new Array();h[0]=a;return a.length;}function Replace(o,n,c){var r=new RegExp(o,(c==true)?'g':'gi');var b=h.join('').replace(r,n);h=new Array();h[0]=b;return this;}function Remove(i,l){var s=h.join('');h=new Array();if(i<1){h[0]=s.substring(l,s.length);}if(i>s.length){h[0]=s;}else{h[0]=s.substring(0,i);h[1]=s.substring(i+l,s.length);}return this;}function Insert(i,v){var s=h.join('');h=new Array();if(i<1){h[0]=v;h[1]=s;}if(i>=s.length){h[0]=s;h[1]=v;}else{h[0]=s.substring(0,i);h[1]=v;h[2]=s.substring(i,s.length);}return this;}function GetType(){return "StringBuilder";}};
http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=cdd24380-e7d7-467f-8462-59c56d0b7ad2
有源代码,并且还有压缩过的源代码
 /*
/* ##################### DO NOT MODIFY THIS HEADER #####################
    ##################### DO NOT MODIFY THIS HEADER ##################### # Title: StringBuilder Class                                        #
    # Title: StringBuilder Class                                        # # Description: Simulates the C# StringBuilder Class in Javascript.  #
    # Description: Simulates the C# StringBuilder Class in Javascript.  # # Website: www.codevendor.com                                       #
    # Website: www.codevendor.com                                       # # Author: Adam Smith                                                #
    # Author: Adam Smith                                                # # Email: ibulwark@hotmail.com                                       #
    # Email: ibulwark@hotmail.com                                       # # Date: November 12, 2006                                           #
    # Date: November 12, 2006                                           # #####################################################################
    ##################################################################### */
*/
 // Simulates the C# StringBuilder Class in Javascript.
// Simulates the C# StringBuilder Class in Javascript. // Parameter["stringToAdd"] - The string to add.
// Parameter["stringToAdd"] - The string to add.  StringBuilder = function(stringToAdd)
StringBuilder = function(stringToAdd) {
{     var h = new Array();
    var h = new Array(); if(stringToAdd){h[0] = stringToAdd;}
    if(stringToAdd){h[0] = stringToAdd;}  this.Append = Append;
    this.Append = Append; this.AppendLine = AppendLine;
    this.AppendLine = AppendLine; this.ToString = ToString;
    this.ToString = ToString; this.Clear = Clear;
    this.Clear = Clear; this.Length = Length;
    this.Length = Length; this.Replace = Replace;
    this.Replace = Replace; this.Remove = Remove;
    this.Remove = Remove; this.Insert = Insert;
    this.Insert = Insert; this.GetType = GetType;
    this.GetType = GetType;       
     // Appends the string representation of a specified object to the end of this instance.
    // Appends the string representation of a specified object to the end of this instance. // Parameter["stringToAppend"] - The string to append.
    // Parameter["stringToAppend"] - The string to append.  function Append(stringToAppend)
    function Append(stringToAppend) {
    { h[h.length] = stringToAppend;
        h[h.length] = stringToAppend; }
    } 
 // Appends the string representation of a specified object to the end of this instance with a carriage return and line feed.
    // Appends the string representation of a specified object to the end of this instance with a carriage return and line feed. // Parameter["stringToAppend"] - The string to append.
    // Parameter["stringToAppend"] - The string to append.  function AppendLine(stringToAppend)
    function AppendLine(stringToAppend) {
    { h[h.length] = stringToAppend;
        h[h.length] = stringToAppend; h[h.length] = "\r\n";
        h[h.length] = "\r\n"; }
    }  
   // Converts a StringBuilder to a String.
    // Converts a StringBuilder to a String. function ToString()
    function ToString() {
    { if(!h){ return ""; }
        if(!h){ return ""; } if(h.length<2){ return (h[0])?h[0]:""; }
        if(h.length<2){ return (h[0])?h[0]:""; } var a = h.join('');
        var a = h.join(''); h = new Array();
        h = new Array(); h[0] = a;
        h[0] = a; return a;
        return a; }
    }
 // Clears the StringBuilder
    // Clears the StringBuilder function Clear()
    function Clear() {
    { h = new Array();
        h = new Array(); }
    }
 // Gets the StringBuilder Length
    // Gets the StringBuilder Length function Length()
    function Length() {
    { if(!h){return 0;}
        if(!h){return 0;} if(h.length<2){ return (h[0])?h[0].length:0; }
        if(h.length<2){ return (h[0])?h[0].length:0; } var a = h.join('');
        var a = h.join(''); h = new Array();
        h = new Array(); h[0] = a;
        h[0] = a; return a.length;
        return a.length; }
    }
 // Replaces all occurrences of a specified character or string in this instance with another specified character or string.
    // Replaces all occurrences of a specified character or string in this instance with another specified character or string. // Parameter["oldValue"] - The string to replace.
    // Parameter["oldValue"] - The string to replace.  // Parameter["newValue"] - The string that replaces oldValue.
    // Parameter["newValue"] - The string that replaces oldValue.  // Parameter["caseSensitive"] - True or false for case replace.
    // Parameter["caseSensitive"] - True or false for case replace. // Return Value - A reference to this instance with all instances of oldValue replaced by newValue.
    // Return Value - A reference to this instance with all instances of oldValue replaced by newValue. function Replace(oldValue, newValue, caseSensitive)
    function Replace(oldValue, newValue, caseSensitive) {
    { var r = new RegExp(oldValue,(caseSensitive==true)?'g':'gi');
        var r = new RegExp(oldValue,(caseSensitive==true)?'g':'gi'); var b = h.join('').replace(r, newValue);
        var b = h.join('').replace(r, newValue); h = new Array();
        h = new Array(); h[0] = b;
        h[0] = b; return this;
        return this; }
    }
 // Removes the specified range of characters from this instance.
    // Removes the specified range of characters from this instance. // Parameter["startIndex"] - The position where removal begins.
    // Parameter["startIndex"] - The position where removal begins.  // Parameter["length"] - The number of characters to remove.
    // Parameter["length"] - The number of characters to remove. // Return Value - A reference to this instance after the excise operation has occurred.
    // Return Value - A reference to this instance after the excise operation has occurred. function Remove(startIndex, length)
    function Remove(startIndex, length) {
    {        var s = h.join('');
        var s = h.join(''); h = new Array();
        h = new Array(); 
     if(startIndex<1){h[0]=s.substring(length, s.length);}
        if(startIndex<1){h[0]=s.substring(length, s.length);} if(startIndex>s.length){h[0]=s;}
        if(startIndex>s.length){h[0]=s;} else
        else {
        { h[0]=s.substring(0, startIndex);
            h[0]=s.substring(0, startIndex);   h[1]=s.substring(startIndex+length, s.length);
            h[1]=s.substring(startIndex+length, s.length); }
        } 
     return this;
        return this; }
    }
 // Inserts the string representation of a specified object into this instance at a specified character position.
    // Inserts the string representation of a specified object into this instance at a specified character position. // Parameter["index"] - The position at which to insert.
    // Parameter["index"] - The position at which to insert. // Parameter["value"] - The string to insert.
    // Parameter["value"] - The string to insert.  // Return Value - A reference to this instance after the insert operation has occurred.
    // Return Value - A reference to this instance after the insert operation has occurred. function Insert(index, value)
    function Insert(index, value) {
    { var s = h.join('');
        var s = h.join(''); h = new Array();
        h = new Array(); 
     if(index<1){h[0]=value; h[1]=s;}
        if(index<1){h[0]=value; h[1]=s;} if(index>=s.length){h[0]=s; h[1]=value;}
        if(index>=s.length){h[0]=s; h[1]=value;} else
        else {
        { h[0]=s.substring(0, index);
            h[0]=s.substring(0, index);  h[1]=value;
            h[1]=value;  h[2]=s.substring(index, s.length);
            h[2]=s.substring(index, s.length); }
        } 
     return this;
        return this; }
    }
 // Gets the type
    // Gets the type function GetType()
    function GetType() {
    { return "StringBuilder";
        return "StringBuilder"; }
    } };
};
所谓的压缩代码其实就是把文件中的空格换行清掉:
 StringBuilder=function(A){var h=new Array();if(A){h[0]=A;}this.Append=Append;this.AppendLine=AppendLine;this.ToString=ToString;this.Clear=Clear;this.Length=Length;this.Replace=Replace;this.Remove=Remove;this.Insert=Insert;this.GetType=GetType;function Append(s){h[h.length]=s;}function AppendLine(s){h[h.length]=s;h[h.length]="\r\n";}function ToString(){if(!h){return "";}if(h.length<2){return (h[0])?h[0]:"";}var a=h.join('');h=new Array();h[0]=a;return a;}function Clear(){h=new Array();}function Length(){if(!h){return 0;}if(h.length<2){return (h[0])?h[0].length:0;}var a=h.join('');h=new Array();h[0]=a;return a.length;}function Replace(o,n,c){var r=new RegExp(o,(c==true)?'g':'gi');var b=h.join('').replace(r,n);h=new Array();h[0]=b;return this;}function Remove(i,l){var s=h.join('');h=new Array();if(i<1){h[0]=s.substring(l,s.length);}if(i>s.length){h[0]=s;}else{h[0]=s.substring(0,i);h[1]=s.substring(i+l,s.length);}return this;}function Insert(i,v){var s=h.join('');h=new Array();if(i<1){h[0]=v;h[1]=s;}if(i>=s.length){h[0]=s;h[1]=v;}else{h[0]=s.substring(0,i);h[1]=v;h[2]=s.substring(i,s.length);}return this;}function GetType(){return "StringBuilder";}};
StringBuilder=function(A){var h=new Array();if(A){h[0]=A;}this.Append=Append;this.AppendLine=AppendLine;this.ToString=ToString;this.Clear=Clear;this.Length=Length;this.Replace=Replace;this.Remove=Remove;this.Insert=Insert;this.GetType=GetType;function Append(s){h[h.length]=s;}function AppendLine(s){h[h.length]=s;h[h.length]="\r\n";}function ToString(){if(!h){return "";}if(h.length<2){return (h[0])?h[0]:"";}var a=h.join('');h=new Array();h[0]=a;return a;}function Clear(){h=new Array();}function Length(){if(!h){return 0;}if(h.length<2){return (h[0])?h[0].length:0;}var a=h.join('');h=new Array();h[0]=a;return a.length;}function Replace(o,n,c){var r=new RegExp(o,(c==true)?'g':'gi');var b=h.join('').replace(r,n);h=new Array();h[0]=b;return this;}function Remove(i,l){var s=h.join('');h=new Array();if(i<1){h[0]=s.substring(l,s.length);}if(i>s.length){h[0]=s;}else{h[0]=s.substring(0,i);h[1]=s.substring(i+l,s.length);}return this;}function Insert(i,v){var s=h.join('');h=new Array();if(i<1){h[0]=v;h[1]=s;}if(i>=s.length){h[0]=s;h[1]=v;}else{h[0]=s.substring(0,i);h[1]=v;h[2]=s.substring(i,s.length);}return this;}function GetType(){return "StringBuilder";}};
 
                    
                     
                    
                 
                    
                 
 
        

 
     
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号