Csharp/C Sharp/Language Basics/StringBuffer StringBuilder

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Demonstrating StringBuilder AppendFormat

<source lang="csharp">

   using System;
   using System.Text;
  class StringBuilderAppendFormat {
     static void Main(string[] args)
     {
        StringBuilder buffer = new StringBuilder();
        string string1, string2;
        string1 = "This {0} costs: {1:C}.\n";
        object[] objectArray = new object[ 2 ];
        objectArray[ 0 ] = "Software";
        objectArray[ 1 ] = 1234.56;
        buffer.AppendFormat( string1, objectArray );
        string2 = "Number:{0:d3}.\n" +
           "Number right aligned with spaces:{0, 4}.\n" +
           "Number left aligned with spaces:{0, -4}.";
        buffer.AppendFormat( string2, 5 );
        Console.WriteLine(buffer.ToString());
     }
  } 
          
      </source>


illustrates the use of StringBuilder objects

<source lang="csharp"> /* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110

  • /

/*

 Example9_2.cs illustrates the use of StringBuilder objects
  • /

using System; using System.Text; public class Example9_2 {

 public static void DisplayProperties(
   string name,
   StringBuilder myStringBuilder
 )
 {
   // display the properties for the StringBuilder object
   Console.WriteLine(name + ".Length = " +
     myStringBuilder.Length);
   Console.WriteLine(name + ".Capacity = " +
     myStringBuilder.Capacity);
   Console.WriteLine(name + ".MaxCapacity = " +
     myStringBuilder.MaxCapacity);
 }
 public static void Main()
 {
   // create some StringBuilder objects
   StringBuilder myStringBuilder = new StringBuilder();
   int capacity = 50;
   StringBuilder myStringBuilder2 = new StringBuilder(capacity);
   int maxCapacity = 100;
   StringBuilder myStringBuilder3 =
     new StringBuilder(capacity, maxCapacity);
   string myString = "To be or not to be";
   StringBuilder myStringBuilder4 = new StringBuilder(myString);
   int startIndex = 0;
   int stringLength = myString.Length;
   StringBuilder myStringBuilder5 =
     new StringBuilder(myString, startIndex, stringLength, capacity);
   // display the StringBuilder objects" properties
   DisplayProperties("myStringBuilder", myStringBuilder);
   DisplayProperties("myStringBuilder2", myStringBuilder2);
   DisplayProperties("myStringBuilder3", myStringBuilder3);
   DisplayProperties("myStringBuilder4", myStringBuilder4);
   DisplayProperties("myStringBuilder5", myStringBuilder5);
   // use the Append() method to append two strings, an int, and a bool
   // to myStringBuilder
   myStringBuilder.Append(myString);
   myStringBuilder.Append(", that is the question ... ");
   int myInt = 1234;
   myStringBuilder.Append(myInt);
   bool myBool = true;
   myStringBuilder.Append(myBool);
   // use the Append() method to append a character to myStringBuilder
   myStringBuilder.Append("z", 5);
   // use the Append() method to append a substring to myStringBuilder
   myStringBuilder.Append("Here"s another string", 0, 4);
   // display the contents of myStringBuilder
   Console.WriteLine("myStringBuilder = " + myStringBuilder);
   // use the AppendFormat() method to add a formatted
   // string containing a floating point number to myStringBuilder
   float myFloat = 1234.56789f;
   myStringBuilder.AppendFormat("{0, 10:f3}", myFloat);
   Console.WriteLine("myStringBuilder = " + myStringBuilder);
   // use the Insert() method to insert strings into myStringBuilder
   myStringBuilder.Insert(6, "friends, ");
   myStringBuilder.Insert(22, "Romans, ", 3);
   Console.WriteLine("myStringBuilder = " + myStringBuilder);
   // use the Remove() method to remove part of myStringBuilder
   myStringBuilder.Remove(14, 7);
   Console.WriteLine("myStringBuilder = " + myStringBuilder);
   // use the Replace() method to replace part of myStringBuilder
   myStringBuilder.Replace(",", "?");
   Console.WriteLine("myStringBuilder = " + myStringBuilder);
   // use the ToString() method to convert myStringBuilder
   // to a string
   string myString2 = myStringBuilder.ToString();
   Console.WriteLine("myString2 = " + myString2);
 }

}

      </source>


Replace(): replace part of myStringBuilder

<source lang="csharp"> using System; using System.Text;

class Test {

 public static void Main() {
   StringBuilder myStringBuilder = new StringBuilder("1234567890abcdefghijklmnopqret");
   myStringBuilder.Replace("a", "?");
   Console.WriteLine("myStringBuilder = " + myStringBuilder);
 }

}

      </source>


StringBuffer: Replacing Characters

<source lang="csharp"> /*

* C# Programmers Pocket Consultant
* Author: Gregory S. MacBeth
* Email: gmacbeth@comporium.net
* Create Date: June 27, 2003
* Last Modified Date:
*/

using System; using System.Text; namespace Client.Chapter_6___Strings {

 public class ReplacingCharacters
 {
   static void Main(string[] args)
   {
     StringBuilder MyString = new StringBuilder("AAAAABBB");
     Console.WriteLine(MyString);
     MyString.Replace("A", "F");
     Console.WriteLine(MyString);
   }
 }

}

      </source>


StringBuilder AppendFormat() method to add a formatted string containing a floating point number to myStringBuilder

<source lang="csharp"> using System; using System.Text;

class Test {

 public static void Main() {
   StringBuilder myStringBuilder = new StringBuilder();
   float myFloat = 1234.56789f;
   myStringBuilder.AppendFormat("{0, 10:f3}", myFloat);
   Console.WriteLine("myStringBuilder = " + myStringBuilder);
 }

}

      </source>


StringBuilder append: int, char, string, boolean at specific position

<source lang="csharp"> using System; using System.Text;

class Test {

 public static void Main() {
   StringBuilder myStringBuilder = new StringBuilder();
   string myString = "www.nfex.ru";
   myStringBuilder.Append(myString);
   myStringBuilder.Append(", www.nfex.ru... ");
   int myInt = 1234;
   myStringBuilder.Append(myInt);
   bool myBool = true;
   myStringBuilder.Append(myBool);
  
   myStringBuilder.Append("z", 5);
  
   myStringBuilder.Append("Here"s another string", 0, 4);
  
   Console.WriteLine("myStringBuilder = " + myStringBuilder);
 }
  

}

      </source>


StringBuilder EnsureCapacity method

<source lang="csharp">

  using System;
  using System.Text;
  class StringBuilderFeatures
  {
     static void Main(string[] args)
     {
        StringBuilder buffer =new StringBuilder( "Hello, how are you?" );
        string output = "buffer = " + buffer.ToString() +
           "\nLength = " + buffer.Length +
           "\nCapacity = " + buffer.Capacity;
        buffer.EnsureCapacity( 75 );
        output += "\n\nNew capacity = " +buffer.Capacity;
        // truncate StringBuilder by setting Length property
        buffer.Length = 10;
        output += "\n\nNew length = " +
           buffer.Length + "\nbuffer = ";
        // use StringBuilder indexer
        for ( int i = 0; i < buffer.Length; i++ )
           output += buffer[ i ];
        Console.WriteLine( output);
     }
  }


      </source>


StringBuilder foreach

<source lang="csharp"> using System; using System.Text; public class StringBuilderDemo {

   public static void Main()
   {
       string s = "I will not buy this record, it is scratched";
       char[] separators = new char[] {" ", ","};
       StringBuilder sb = new StringBuilder();
       int number = 1;
       
       foreach (string sub in s.Split(separators))
       {
           sb.AppendFormat("{0}: {1} ", number++, sub);
       }
       Console.WriteLine("{0}", sb);
   }

}

      </source>


StringBuilder Insert(): insert strings into myStringBuilder

<source lang="csharp"> using System; using System.Text;

class Test {

 public static void Main() {
   StringBuilder myStringBuilder = new StringBuilder("asdfasdfadsf");
   myStringBuilder.Insert(6, "friends, ");
   myStringBuilder.Insert(2, "Romans, ", 3);
   Console.WriteLine("myStringBuilder = " + myStringBuilder);
 }

}

      </source>


StringBuilder"s properties for different constructors

<source lang="csharp"> using System; using System.Text;

class Test {

 public static void DisplayProperties(string name,StringBuilder myStringBuilder) {
   // display the properties for the StringBuilder object
   Console.WriteLine(name + ".Length = " + myStringBuilder.Length);
   Console.WriteLine(name + ".Capacity = " + myStringBuilder.Capacity);
   Console.WriteLine(name + ".MaxCapacity = " + myStringBuilder.MaxCapacity);
 }
  
  
 public static void Main() {
   StringBuilder myStringBuilder = new StringBuilder();
   int capacity = 50;
   StringBuilder myStringBuilder2 = new StringBuilder(capacity);
   int maxCapacity = 100;
   StringBuilder myStringBuilder3 = new StringBuilder(capacity, maxCapacity);
   string myString = "www.nfex.ru";
   StringBuilder myStringBuilder4 = new StringBuilder(myString);
   int startIndex = 0;
   int stringLength = myString.Length;
   StringBuilder myStringBuilder5 = new StringBuilder(myString, startIndex, stringLength, capacity);
  
   // display the StringBuilder objects" properties
   DisplayProperties("myStringBuilder", myStringBuilder);
   DisplayProperties("myStringBuilder2", myStringBuilder2);
   DisplayProperties("myStringBuilder3", myStringBuilder3);
   DisplayProperties("myStringBuilder4", myStringBuilder4);
   DisplayProperties("myStringBuilder5", myStringBuilder5);
  
 }
  

}

      </source>


StringBuilder: write line

<source lang="csharp"> using System; using System.Text; public class SampleBuilder {

   public static void Main()
   {
       StringBuilder sb = new StringBuilder("test string");
       int length = 0;
   
       length = sb.Length;
       Console.WriteLine("The result is: "{0}"", sb);
       Console.WriteLine("The length is: {0}", length);
   
       sb.Length = 4;
       length = sb.Length;
       Console.WriteLine("The result is: "{0}"", sb);
       Console.WriteLine("The length is: {0}", length);
   
       sb.Length = 20;
       length = sb.Length;
       Console.WriteLine("The result is: "{0}"", sb);
       Console.WriteLine("The length is: {0}", length);
   }

}

      </source>


ToString(): convert myStringBuilder to a string

<source lang="csharp"> using System; using System.Text;

class Test {

 public static void Main() {
   StringBuilder myStringBuilder = new StringBuilder("1234567890abcdefghijklmnopqret");
   string myString2 = myStringBuilder.ToString();
   Console.WriteLine("myString2 = " + myString2);
 }

}

      </source>


Use the Remove() method to remove part of StringBuilder

<source lang="csharp"> using System; using System.Text;

class Test {

 public static void Main() {
   StringBuilder myStringBuilder = new StringBuilder("1234567890abcdefghijklmnopqret");
   myStringBuilder.Remove(14, 7);
   Console.WriteLine("myStringBuilder = " + myStringBuilder);
 }

}

      </source>