Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+Presentation_3.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
299.01 Кб
Скачать

3.1.4. Объединение нескольких строк

Пример 3.5. Использование операторов "+" и "+=" для однократной конкатенации строк.

public class Example4

{ public static void Main()

{ string userName = "Александр";

string date = System.DateTime.Today.ToShortDateString();

string str = "Привет " + userName + ". Сегодня " + date + ".";

System.Console.WriteLine(str);

// Вывод: Привет Александр. Сегодня 15.10.2011.

str += " Как дела?";

System.Console.WriteLine(str);

// Вывод: Привет Александр. Сегодня 15.10.2011. Как дела?

System.Console.ReadLine();

}

}

Пример 3.6. Использование методов Append и AppendLine класса System.Text.StringBuilder для объединения строк без снижения производительности за счет многократного использования оператора "+".

class StringBuilderTest

{ static void Main()

{ // Использование строк StringBuilder для их конкатенации

// в циклах с большим числом повторений

System.Text.StringBuilder sb = new System.Text.StringBuilder();

for (int i = 1; i <= 100; i++)

{ sb.Append(" ").Append(i.ToString());

if ((i % 10) == 0) sb.AppendLine();

}

System.Console.WriteLine(sb.ToString());

System.Console.ReadLine();

}

}

/* Вывод:

1 2 3 4 5 6 7 8 9 10

11 12 13 14 15 16 17 18 19 20

21 22 23 24 25 26 27 28 29 30

31 32 33 34 35 36 37 38 39 40

41 42 43 44 45 46 47 48 49 50

51 52 53 54 55 56 57 58 59 60

61 62 63 64 65 66 67 68 69 70

71 72 73 74 75 76 77 78 79 80

81 82 83 84 85 86 87 88 89 90

91 92 93 94 95 96 97 98 99 100

*/

3.1.5. Разделение строк на подстроки

Пример 3.7. Демонстрация разбора строки с помощью метода Split класса System.String.

class TestStringSplit

{ static void Main()

{ char[] delimiterChars = { ' ', ',', '.', ':', ';', '\t' };

string text = "один\tдва три:четыре,пять;шесть.семь";

System.Console.WriteLine("Исходный текст: '{0}'", text);

string[] words = text.Split(delimiterChars);

System.Console.WriteLine("В этом тексте {0} слов:",

words.Length);

foreach (string s in words)

System.Console.WriteLine(s);

System.Console.ReadLine();

}

}

/* Вывод:

Исходный текст: 'один два три:четыре,пять;шесть.семь'

В этом тексте 7 слов:

один

два

три

четыре

пять

шесть

семь

*/

3.2. Класс System.Text.StringBuilder

(http://msdn.microsoft.com/ru-ru/library/system.text.stringbuilder.aspx)

Явное использование оператора new для объявления строк StringBuilder:

System.Text.StringBuilder sb = new

System.Text.StringBuilder("Ираназиатская страна");

sb[3] = 'к';

System.Console.WriteLine(sb.ToString());

// Вывод: Ирак – азиатская страна

Выделение строке (StringBuilder) нужного объема памяти:

System.Text.StringBulder sb1 = new System.Text.StringBuilder(128);

System.Text.StringBulder sb2 = new

System.Text.StringBuilder("abcdef", 16);

Таблица 3.2. Основные свойства и методы класса System.Text.StringBuilder

Имя

Описание

Свойства

Capacity

Возвращает или задает максимальное число знаков, которое может содержаться в памяти, назначенной текущей строке StringBuilder.

Chars[i]

Возвращает или задает символ на указанной позиции (i) в текущей строке StringBuilder.

Length

Возвращает или задает длину текущей строки StringBuilder.

MaxCapacity

Возвращает максимальную емкость текущей строки StringBuilder (определяется значением Int32.MaxValue).

Методы

Append(V);

Добавляет к текущей строке строковое представление указанного значения любого типа (V).

Append(ch);

Append(ch,n);

Добавляет к текущей строке строковое представление указанного символа Unicode (ch) или заданное число его копий (n).

Append(arrCh[]);

Append(arrCh[],i,L);

Добавляет к текущей строке строковое представление всех символов Unicode из указанного массива (arrCh) или L его элементов, начиная с i-го.

Append(s);

Append(s,i,L);

Добавляет к текущей строке копию указанной строки (s, типа String) или подстроки, начиная с i-го индекса и длиной L знаков.

AppendFormat(sf,v1);

AppendFormat(sf,v1,v2);

AppendFormat(sf,v1,v2,v3);

AppendFormat(sf,arrV[]);

Добавляет к текущей строке строковое представление одного, двух или трех указанных объектов (v1, v2, v3), либо элементов массива (arrV), выполненное в соответствии с элементами формата (см. п.4.2) в указанной строке (sf).

AppendLine();

AppendLine(s);

Добавляет копию указанной строки (s, типа String) и знак завершения строки в конец текущей строки.

Clear();

Удаляет все символы из текущей строки (аналогичен ука-занию 0 (ноля) в свойстве Length строки StringBuilder).

CopyTo(i1,arrCh[],i2,L);

Копирует заданное число символов (L) из текущей строки, начиная с указанной позиции (i1), и вставляет в массив символов (arrCh), начиная с i2-элемента (заменяя их).

EnsureCapacity(n);

Устанавливает максимальную емкость текущей строки (StringBuilder) не меньше указанного значения (n).

Insert(i,V);

Вставляет в текущую строку, начиная с i-ой позиции, стро-ковое представление указанного значения любого типа (V).

Insert(i,ch);

Вставляет в текущую строку, начиная с i-ой позиции, строковое представление указанного символа Unicode (ch).

Insert(i,arrCh[]);

Insert(i,arrCh[],i2,L);

Вставляет в текущую строку, начиная с i-ой позиции, стро-ковое представление всех символов Unicode из указанного массива (arrCh) или L его элементов, начиная с i2-го.

Insert(i,s);

Insert(i,s,n);

Вставляет в текущую строку, начиная с i-ой позиции, одну или n копий указанной строки (s, типа String).

Remove(i,L);

Удаляет указанный диапазон символов (L знаков, начиная с i-го) из текущей строки.

Replace(ch1,ch2);

Replace(ch1,ch2,i,L);

Замещает в текущей строке или подстроке (L знаков, начиная с i-го) все вхождения указанного символа (ch1) на другой указанный символ (ch2).

Replace(s1,s2);

Replace(s1,s2,i,L);

Замещает в текущей строке или подстроке (L знаков, начиная с i-го) все вхождения указанной строки (s1) на другую указанную строку (s2).

ToString();

ToString(i,L);

Преобразует к типу String значение текущей строки или подстроки (L знаков, начиная с i-го).

Пример3.8. Использование свойств Capacity, MaxCapacity и Length, а также методов EnsureCapacity, ToString.

using System;

using System.Text;

class Sample

{ public static void Main()

{ StringBuilder sb1 = new StringBuilder("abc");

StringBuilder sb2 = new StringBuilder("abc", 16);

Console.WriteLine("a1) sb1.Length = {0}, sb1.Capacity = {1}",

sb1.Length, sb1.Capacity);

Console.WriteLine("a2) sb2.Length = {0}, sb2.Capacity = {1}",

sb2.Length, sb2.Capacity);

Console.WriteLine("a3) sb1.ToString() = \"{0}\", " +

"sb2.ToString() = \"{1}\"",

sb1.ToString(), sb2.ToString());

Console.WriteLine("a4) sb1.MaxCapacity = {0}, " +

"sb2.MaxCapacity = {1}",

sb1.MaxCapacity, sb2.MaxCapacity);

sb1.EnsureCapacity(50);

Console.WriteLine("\nМаксимально допустимое число знаков " +

"в строке sb1 увеличено до 50.");

Console.WriteLine("b1) sb1.Length = {0}, sb1.Capacity = {1}",

sb1.Length, sb1.Capacity);

Console.WriteLine("b2) sb2.Length = {0}, sb2.Capacity = {1}",

sb2.Length, sb2.Capacity);

Console.WriteLine("b3) sb1.ToString() = \"{0}\", " +

"sb2.ToString() = \"{1}\"",

sb1.ToString(), sb2.ToString());

sb1.Length = 0;

Console.WriteLine("\nУстановка длины строки sb1 в 0.");

sb2.Capacity = 51;

Console.WriteLine("Максимально допустимое число знаков " +

"в строке sb2 увеличено до 51.");

Console.WriteLine("c1) sb1.Length = {0}, sb1.Capacity = {1}",

sb1.Length, sb1.Capacity);

Console.WriteLine("c2) sb2.Length = {0}, sb2.Capacity = {1}",

sb2.Length, sb2.Capacity);

Console.WriteLine("c3) sb1.ToString() = \"{0}\", " +

"sb2.ToString() = \"{1}\"",

sb1.ToString(), sb2.ToString());

Console.ReadLine();

}

}

/* Вывод:

a1) sb1.Length = 3, sb1.Capacity = 16

a2) sb2.Length = 3, sb2.Capacity = 16

a3) sb1.ToString() = "abc", sb2.ToString() = "abc"

a4) sb1.MaxCapacity = 2147483647, sb2.MaxCapacity = 2147483647

Максимально допустимое число знаков в строке sb1 увеличено до 50.

b1) sb1.Length = 3, sb1.Capacity = 50

b2) sb2.Length = 3, sb2.Capacity = 16

b3) sb1.ToString() = "abc", sb2.ToString() = "abc"

Установка длины строки sb1 в 0.

Максимально допустимое число знаков в строке sb2 увеличено до 51.

c1) sb1.Length = 0, sb1.Capacity = 50

c2) sb2.Length = 3, sb2.Capacity = 51

c3) sb1.ToString() = "", sb2.ToString() = "abc"

*/

Пример 3.9. Использование методов Append, AppendFormat, Insert и Replace класса StringBuilder для изменения значения строки.

using System;

using System.Text;

public sealed class App

{ static void Main()

{ // Создание строки StringBuilder максимальной емкостью

// до 50-ти символов и ее инициализация значением "ABC".

StringBuilder sb = new StringBuilder("ABC", 50);

// Добавление 3-х символов в конец строки StringBuilder.

sb.Append(new char[] { 'D', 'E', 'F' });

// Добавление строки формата в конец строки StringBuilder.

sb.AppendFormat("GHI{0}{1}", 'J', 'k');

// Вывод длины строки StringBuilder и ее содержимого.

Console.WriteLine("{0} симв.: {1}", sb.Length, sb.ToString());

// Вставка подстроки в самое начало строки StringBuilder.

sb.Insert(0, "Алфавит: ");

// Замена всех вхождений символа "k" символом "K".

sb.Replace('k', 'K');

// Вывод длины строки StringBuilder и ее содержимого.

Console.WriteLine("{0} симв.: {1}", sb.Length, sb.ToString());

}

}

// Вывод:

// 11 симв.: ABCDEFGHIJk

// 21 симв.: Алфавит: ABCDEFGHIJK

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]