Share via


StringBuilder.Chars[Int32] Properti

Definisi

Mendapatkan atau mengatur karakter pada posisi karakter yang ditentukan dalam instans ini.

public:
 property char default[int] { char get(int index); void set(int index, char value); };
public char this[int index] { get; set; }
member this.Chars(int) : char with get, set
Default Public Property Chars(index As Integer) As Char

Parameter

index
Int32

Posisi karakter.

Nilai Properti

Karakter Unicode pada posisi index.

Pengecualian

index berada di luar batas instans ini saat mengatur karakter.

index berada di luar batas instans ini saat mendapatkan karakter.

Keterangan

Parameter index adalah posisi karakter dalam StringBuilder. Karakter pertama dalam string adalah pada indeks 0. Panjang string adalah jumlah karakter yang dikandungnya. Karakter instans terakhir yang StringBuilder dapat diakses adalah pada indeks Length - 1.

Chars[Int32] adalah properti default kelas StringBuilder . Di C#, ini adalah pengindeks. Ini berarti bahwa karakter individual dapat diambil dari Chars[Int32] properti seperti yang ditunjukkan dalam contoh berikut, yang menghitung jumlah karakter alfabet, spasi putih, dan tanda baca dalam string.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      int nAlphabeticChars = 0;
      int nWhitespace = 0;
      int nPunctuation = 0;  
      StringBuilder sb = new StringBuilder("This is a simple sentence.");
      
      for (int ctr = 0; ctr < sb.Length; ctr++) {
         char ch = sb[ctr];
         if (Char.IsLetter(ch)) { nAlphabeticChars++;  continue; }
         if (Char.IsWhiteSpace(ch)) { nWhitespace++;  continue; }
         if (Char.IsPunctuation(ch)) nPunctuation++;  
      }    

      Console.WriteLine("The sentence '{0}' has:", sb);
      Console.WriteLine("   Alphabetic characters: {0}", nAlphabeticChars);
      Console.WriteLine("   White-space characters: {0}", nWhitespace);
      Console.WriteLine("   Punctuation characters: {0}", nPunctuation);
   }
}
// The example displays the following output:
//       The sentence 'This is a simple sentence.' has:
//          Alphabetic characters: 21
//          White-space characters: 4
//          Punctuation characters: 1
open System
open System.Text

let mutable nAlphabeticChars = 0
let mutable nWhitespace = 0
let mutable nPunctuation = 0  
let sb = StringBuilder "This is a simple sentence."

for i = 0 to sb.Length - 1 do
    let ch = sb[i]
    if Char.IsLetter ch then
        nAlphabeticChars <- nAlphabeticChars + 1
    elif Char.IsWhiteSpace ch then
        nWhitespace <- nWhitespace + 1
    elif Char.IsPunctuation ch then
        nPunctuation <- nPunctuation + 1

printfn $"The sentence '{sb}' has:"
printfn $"   Alphabetic characters: {nAlphabeticChars}"
printfn $"   White-space characters: {nWhitespace}"
printfn $"   Punctuation characters: {nPunctuation}"

// The example displays the following output:
//       The sentence 'This is a simple sentence.' has:
//          Alphabetic characters: 21
//          White-space characters: 4
//          Punctuation characters: 1
Imports System.Text

Module Example
   Public Sub Main()
      Dim nAlphabeticChars As Integer = 0
      Dim nWhitespace As Integer = 0
      Dim nPunctuation As Integer = 0  
      Dim sb As New StringBuilder("This is a simple sentence.")
      
      For ctr As Integer = 0 To sb.Length - 1
         Dim ch As Char = sb(ctr)
         If Char.IsLetter(ch) Then nAlphabeticChars += 1 : Continue For
         If Char.IsWhiteSpace(ch) Then nWhitespace += 1 : Continue For
         If Char.IsPunctuation(ch) Then nPunctuation += 1
      Next    

      Console.WriteLine("The sentence '{0}' has:", sb)
      Console.WriteLine("   Alphabetic characters: {0}", nAlphabeticChars)
      Console.WriteLine("   White-space characters: {0}", nWhitespace)
      Console.WriteLine("   Punctuation characters: {0}", nPunctuation)
   End Sub
End Module
' The example displays the following output:
'       The sentence 'This is a simple sentence.' has:
'          Alphabetic characters: 21
'          White-space characters: 4
'          Punctuation characters: 1

Menggunakan pengindeksan berbasis karakter dengan Chars[] properti bisa sangat lambat dalam kondisi berikut:

Performa sangat terpengaruh karena setiap akses karakter memandu seluruh daftar gugus yang ditautkan untuk menemukan buffer yang benar untuk diindeks.

Catatan

Bahkan untuk objek "gugus" StringBuilder besar, menggunakan Chars[] properti untuk akses berbasis indeks ke satu atau sejumlah kecil karakter memiliki dampak performa yang dapat diabaikan; biasanya, ini adalah operasi O(n ). Dampak performa yang signifikan terjadi ketika mengulangi karakter dalam StringBuilder objek, yang merupakan operasi O(n^2 ).

Jika Anda mengalami masalah performa saat menggunakan pengindeksan berbasis karakter dengan StringBuilder objek, Anda dapat menggunakan salah satu solusi berikut:

  • Konversikan StringBuilder instans menjadi String dengan memanggil ToString metode , lalu akses karakter dalam string.

  • Salin konten objek yang ada StringBuilder ke objek pra-ukuran StringBuilder baru. Performa meningkat karena objek baru StringBuilder tidak gugus. Contohnya:

    // sbOriginal is the existing StringBuilder object
    var sbNew = new StringBuilder(sbOriginal.ToString(), sbOriginal.Length);
    
    ' sbOriginal is the existing StringBuilder object
    Dim sbNew = New StringBuilder(sbOriginal.ToString(), sbOriginal.Length)
    
  • Atur kapasitas StringBuilder awal objek ke nilai yang kira-kira sama dengan ukuran maksimum yang diharapkan dengan memanggil StringBuilder(Int32) konstruktor. Perhatikan bahwa ini mengalokasikan seluruh blok memori bahkan jika StringBuilder jarang mencapai kapasitas maksimumnya.

Berlaku untuk

Lihat juga