Хотя функция String.Format() позволяет генерировать строки в зависимости от значений других строк, это не самый эффективный способ построения строк. В среде времени выполнения существует класс StringBuilder, упрощающий решение этой задачи.
Класс StringBuilder поддерживает следующие свойства и функции:
Свойство | Описание |
Capacity | Читает или задает текущую вместимость (количество символов, которые могут храниться в StringBuilder) |
[] | Индексатор StringBuilder предназначен для чтения или записи символа в заданной позиции |
Length | Читает или задает длину строки |
MaxCapacity | Читает максимальную вместимость StringBuilder |
Функция | Описание |
Append() | Присоединяет строковое представление объекта |
AppendFormat() | Присоединяет строковое представление объекта с использованием заданной форматной строки |
EnsureCapacity() | Обеспечивает наличие в StringBuilder свободного места для хранения заданного количества символов |
Insert() | Вставляет строковое представление заданного объекта в заданную позицию |
Remove() | Удаляет заданные символы |
Replace() | Заменяет все экземпляры заданного символа в строке новым символом |
В следующем примере показано, как использовать класс StringBuilder для построения одной строки из нескольких отдельных строк:
using System;
using System.Text;
class Test
{
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);
}
}
Программа создает строку с пронумерованными словами и выводит следующий результат:
1: I 2: will 3: not 4: buy 5: this 6: record 7: 8: it 9: is 10: scratched
Поскольку при вызове Split() в качестве разделителей одновременно были указаны пробел и запятая, программа считает, что между запятой и следующим за ней пробелом находится слово, что приводит к пропуску в строке.
0 коммент.:
Отправить комментарий