War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

StringBuilder.AppendFormat-Methode (IFormatProvider, String, Object[])

Fügt die Zeichenfolge, die durch Verarbeitung einer kombinierten Formatzeichenfolge mit 0 (null) oder mehr Formatelementen zurückgegeben wurde, an diese Instanz an. Jedes Formatelement wird von der Zeichenfolgendarstellung eines entsprechenden Arguments in einem Parameterarray ersetzt, das einen angegebenen Formatanbieter verwendet.

Namespace:  System.Text
Assembly:  mscorlib (in mscorlib.dll)

public StringBuilder AppendFormat(
	IFormatProvider provider,
	string format,
	params Object[] args
)

Parameter

provider
Typ: System.IFormatProvider
Ein Objekt, das kulturspezifische Formatierungsinformationen bereitstellt.
format
Typ: System.String
Eine kombinierte Formatierungszeichenfolge (siehe Hinweise).
args
Typ: System.Object[]
Ein Array zu formatierender Objekte.

Rückgabewert

Typ: System.Text.StringBuilder
Ein Verweis auf diese Instanz, nachdem der Anfügevorgang abgeschlossen wurde. Nach dem Anfügevorgang enthält diese Instanz alle Daten, die auch vor dem Vorgang vorhanden waren. Ihnen folgt eine Kopie von format, wobei die Formatangabe durch die Zeichenfolgeentsprechung des jeweiligen Objektarguments ersetzt wurde.

AusnahmeBedingung
ArgumentNullException

format ist null.

FormatException

format ist ungültig.

- oder -

Der Index eines Formatelements ist kleiner als 0 (null) oder größer oder gleich der Länge des args-Arrays.

ArgumentOutOfRangeException

Die Länge der erweiterten Zeichenfolge würde MaxCapacity überschreiten.

Diese Methode verwendet das Feature für kombinierte Formatierung von .NET Framework, um den Wert eines Objekts in dessen Textdarstellung zu konvertieren und diese Darstellung im aktuellen StringBuilder-Objekt einzubetten.

Der format-Parameter besteht aus 0 (null) oder mehr Textabschnitten, die 0 (null) oder mehr indizierte Platzhalter enthalten, so genannte Formatelemente, die den Objekten in der Parameterliste dieser Methode entsprechen. Im Formatierungsvorgang wird jedes Formatelement durch die Zeichenfolgendarstellung des zugehörigen Objekts ersetzt.

Die Syntax eines Formatelements sieht folgendermaßen aus:

{index[,length][:formatString]}

Elemente in eckigen Klammern sind optional. In der folgenden Tabelle werden die einzelnen Elemente beschrieben.

Element

Beschreibung

Index

Die nullbasierte Position in der Parameterliste des zu formatierenden Objekts. Wenn das durch index angegebene Objekt null ist, wird das Formatelement durch String.Empty ersetzt. Wenn kein Parameter an der index-Position vorhanden ist, wird eine FormatException ausgelöst.

,length

Die Mindestanzahl von Zeichen in der Zeichenfolgendarstellung des Parameters. Falls positiv, ist der Parameter rechtsbündig, falls negativ, ist er linksbündig.

:formatString

Eine standardmäßige oder benutzerdefinierte Formatzeichenfolge, die vom Parameter unterstützt wird.

HinweisHinweis

Informationen zu den standardmäßigen und benutzerdefinierten Formatzeichenfolgen, die mit Datums- und Zeitwerten verwendet werden, finden Sie unter Standard-Formatzeichenfolgen für Datum und Uhrzeit und Benutzerdefinierte Formatzeichenfolgen für Datum und Uhrzeit. Informationen zu den standardmäßigen und benutzerdefinierten Formatzeichenfolgen, die mit numerischen Werten verwendet werden, finden Sie unter Standardmäßige Zahlenformatzeichenfolgen und Benutzerdefinierte Zahlenformatzeichenfolgen. Informationen zu den standardmäßigen Formatzeichenfolgen, die mit Enumerationen verwendet werden, finden Sie unter Enumerationsformatzeichenfolgen.

Der provider-Parameter gibt eine IFormatProvider-Implementierung an, die Formatierungsinformationen für die Objekte in args bereitstellen kann. provider kann eines der folgenden Elemente sein:

  • Ein CultureInfo-Objekt, das kulturspezifische Formatierungsinformationen bereitstellt.

  • Ein NumberFormatInfo-Objekt, das kulturspezifische Formatierungsinformationen für numerische Werte in args bereitstellt.

  • Ein DateTimeFormatInfo-Objekt, das kulturspezifische Formatierungsinformationen für Datums- und Zeitwerte in args bereitstellt.

  • Eine benutzerdefinierte IFormatProvider-Implementierung, die Formatierungsinformationen für ein oder mehrere Objekte in args bereitstellt. In der Regel implementiert eine solche Implementierung auch die ICustomFormatter-Schnittstelle. Das zweite Beispiel im nächsten Abschnitt veranschaulicht einen StringBuilder.AppendFormat(IFormatProvider, String, Object[])-Methodenaufruf mit einer benutzerdefinierten IFormatProvider-Implementierung.

Wenn der provider-Parameter null ist, werden die Formatanbieterinformationen aus der aktuellen Kultur entnommen.

args stellt die zu formatierenden Objekte dar. Jedes Formatierungselement in format wird durch die Zeichenfolgendarstellung des zugehörigen Objekts in args ersetzt. Wenn das Formatelement formatString einschließt und das entsprechende Objekt in args die IFormattable-Schnittstelle implementiert, wird die Formatierung durch args[index].Format(formatString, provider) definiert. Andernfalls definiert args[index].ToString(provider) die Formatierung.

Hinweise zu Aufrufern

In .NET Framework 4 und .NET Framework 4.5 wenn Sie das StringBuilder-Objekt instanziieren, indem Sie den StringBuilder(Int32, Int32)-Konstruktor, aufrufen, können die Länge und die Kapazität der StringBuilder-Instanz über dem Wert seiner MaxCapacity-Eigenschaft hinaus wachsen. Dies kann auftreten, wenn Sie die Methoden Append und AppendFormat aufrufen, um kleinere Zeichenfolgen anfügen.

Im folgenden Beispiel wird die AppendFormat-Methode veranschaulicht.


using System;
using System.Text;
using System.Globalization;

class Sample 
{
    static StringBuilder sb = new StringBuilder();

    public static void Main() 
    {
    int    var1   = 111;
    float  var2   = 2.22F;
    string var3   = "abcd";
    object[] var4 = {3, 4.4, 'X'};

    Console.WriteLine();
    Console.WriteLine("StringBuilder.AppendFormat method:");
    sb.AppendFormat("1) {0}", var1);
    Show(sb);
    sb.AppendFormat("2) {0}, {1}", var1, var2);
    Show(sb);
    sb.AppendFormat("3) {0}, {1}, {2}", var1, var2, var3);
    Show(sb);
    sb.AppendFormat("4) {0}, {1}, {2}", var4);
    Show(sb);
    CultureInfo ci = new CultureInfo("es-ES", true);
    sb.AppendFormat(ci, "5) {0}", var2);
    Show(sb);
    }

    public static void Show(StringBuilder sbs)
    {
    Console.WriteLine(sbs.ToString());
    sb.Length = 0;
    }
}
/*
This example produces the following results:

StringBuilder.AppendFormat method:
1) 111
2) 111, 2.22
3) 111, 2.22, abcd
4) 3, 4.4, X
5) 2,22
*/


Im folgenden Beispiel wird eine benutzerdefinierte IFormatProvider-Implementierung mit dem Namen CustomerFormatter definiert, die eine zehnstellige Kundennummer mit Bindestrichen nach der vierten und siebten Ziffer formatiert. Sie wird an die StringBuilder.AppendFormat(IFormatProvider, String, Object[])-Methode übergeben, um eine Zeichenfolge zu erstellen, die die formatierte Kundennummer und den Kundennamen einschließt.


using System;
using System.Text;

public class Customer
{
   private string custName;
   private int custNumber;

   public Customer(string name, int number)
   {
      this.custName = name;
      this.custNumber = number;
   }

   public string Name
   {
      get { return this.custName; }
   }

   public int CustomerNumber
   {
      get { return this.custNumber; }
   }
}

public class CustomerNumberFormatter : IFormatProvider, ICustomFormatter
{   
   public object GetFormat(Type formatType)
   {
      if (formatType == typeof(ICustomFormatter))
         return this;
      return null;
   }

   public string Format(string format, object arg, IFormatProvider provider)
   {
      if (arg is Int32)
      {
         string custNumber = ((int) arg).ToString("D10");
         return custNumber.Substring(0, 4) + "-" + custNumber.Substring(4, 3) + 
                "-" + custNumber.Substring(7, 3);
      }
      else
      {
         return null;
      }
   }                   
}

public class Example
{
   public static void Main()
   {
      Customer customer = new Customer("A Plus Software", 903654);
      StringBuilder sb = new StringBuilder();
      sb.AppendFormat(new CustomerNumberFormatter(), "{0}: {1}", 
                      customer.CustomerNumber, customer.Name);
      Console.WriteLine(sb.ToString());
   }
}
// The example displays the following output:
//      0000-903-654: A Plus Software


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft