Similar presentations:
Строки в C#
1. Строки в C#
stringStringBuilder
символы (тип char) - самостоятельно
1
2. Строки типа string
Тип string предназначен для работы со строками символов вкодировке Unicode. Ему соответствует базовый класс
System.String библиотеки .NET.
Создание строки:
1.
string s;
// инициализация отложена
2.
string t = "qqq";
3.
string u = new string(' ', 20);
4.
string v = new string( a );
// инициализация строковым литералом
// с пом. конструктора
// создание из массива символов
// создание массива символов: char[] a = { '0', '0', '0' };
2
3. Операции для строк
присваивание (=);проверка на равенство (==);
проверка на неравенство (!=);
обращение по индексу ([]);
сцепление (конкатенация) строк (+).
Строки равны, если имеют одинаковое количество
символов и совпадают посимвольно.
Обращаться к отдельному элементу строки по индексу
можно только для получения значения, но не для его
изменения. Это связано с тем, что строки типа string
относятся к неизменяемым типам данных.
Методы, изменяющие содержимое строки, на самом деле
создают новую копию строки. Неиспользуемые «старые»
копии автоматически удаляются сборщиком мусора.
3
4. Некоторые элементы класса System.String
НазваниеОписание
Compare
Сравнение двух строк в лексикографическом
(алфавитном) порядке. Разные реализации метода
позволяют сравнивать строки и подстроки с учетом
и без учета регистра и особенностей
национального представления дат и т. д.
CompareOrdinal
Сравнение двух строк по кодам символов. Разные
реализации метода позволяют сравнивать строки и
подстроки
CompareTo
Сравнение текущего экземпляра строки с другой
строкой
Concat
Конкатенация строк. Метод допускает сцепление
произвольного числа строк
Copy
Создание копии строки
4
5.
FormatФорматирование в соответствии с заданными
спецификаторами формата
IndexOf,
LastIndexOf,
…
Определение индексов первого и последнего вхождения
заданной подстроки или любого символа из заданного
набора
Insert
Вставка подстроки в заданную позицию
Join
Слияние массива строк в единую строку. Между
элементами массива вставляются разделители (см.
далее)
Length
Длина строки (количество символов)
Remove
Удаление подстроки из заданной позиции
Replace
Замена всех вхождений заданной подстроки или символа
новой подстрокой или символом
Split
Разделение строки на элементы, используя заданные
разделители. Результаты помещаются в массив строк
Substring
Выделение подстроки, начиная с заданной позиции
5
6. Пример 1
string s = "прекрасная королева Изольда";Console.WriteLine( s );
string sub = s.Substring( 3 ).Remove( 12, 2 );
Console.WriteLine( sub );
string[] mas = s.Split(' ');
string joined = string.Join( "! ", mas );
Console.WriteLine( joined );
// 1
// 2
прекрасная королева Изольда
красная корова Изольда
прекрасная! королева! Изольда
6
7. Пример 2
Нотацию массива можно использовать со значением индекса,чтобы получить доступ только для чтения к отдельным
символам, как в следующем примере:
string s5 = "Printing backwards";
for (int i = 0; i < s5.Length; i++) {
System.Console.Write(s5[s5.Length - i - 1]);
}
// Output: "sdrawkcab gnitnirP"
7
8. Пример 3
Подстрокой является последовательность символов,содержащихся в строке. Метод Substring используется для
создания новой строки на основании части исходной строки.
Одно или несколько вхождений подстроки можно найти с
использованием метода IndexOf.
string s3 = "Visual C# Express";
System.Console.WriteLine(s3.Substring(7, 2)); //
Output: "C#"
8
9. Пример 4
Метод Replace используется для замены всех вхожденийзаданной подстроки новой строкой. Так же, как и метод
Substring, метод Replace фактически возвращает новую
строку и не изменяет исходную строку.
string s3 = "Visual C# Express";
System.Console.WriteLine(s3.Replace("C#", "Basic"));
// Output: "Visual Basic Express"
9
10. Пример 5
double a = 12.234;int
b = 29;
Console.WriteLine( " a = {0,6:C} b = {1,2:X}", a, b );
Console.WriteLine( " a = {0,6:0.##} b = {1,5:0.# ' руб. '}", a, b);
Console.WriteLine(" a = {0:F3} b = {1:D3}", a, b);
a = 12,23p. b = 1D
a = 12,23 b = 29 руб.
a = 12,234 b = 029
{n[,m][:спецификатор_формата[число]]}
10
11. Спецификаторы формата для строк
C или cВывод значений в денежном (currency) формате.
D или d
Вывод целых значений.
E или e
Вывод значений в экспоненциальном формате, то есть в виде
d.ddd…E+ddd или d.ddd…e+ddd.
F или f
Вывод значений с фиксированной точностью.
G или g
Формат общего вида. Вывод значений с фиксированной
точностью или в экспоненциальном формате, в
зависимости от того, какой формат требует меньшего
количества позиций.
N или n
Вывод значений в формате d,ddd,ddd.ddd. После
спецификации можно задать целое число, определяющее
длину дробной части
P или p
Вывод числа в процентном формате
R или r
Отмена округления числа при преобразовании в строку.
Гарантирует, что при обратном преобразовании в значение
того же типа получится то же самое
X или x
Вывод значений в шестнадцатеричном формате.
11
12. Примеры пользовательских шаблонов
ЧислоШаблон
Вид
1,243
00.00
01,24
1,243
#.##
1,24
0,1
00.00
00,10
0,1
#.##
,1
12
13. Строки типа StringBuilder
Класс StringBuilder определен в пространстве именSystem.Text. Позволяет изменять значение своих
экземпляров.
При создании экземпляра обязательно использовать
операцию new и конструктор, например:
StringBuilder a = new StringBuilder();
// 1
StringBuilder b = new StringBuilder( "qwerty" );
// 2
StringBuilder c = new StringBuilder( 100 );
// 3
StringBuilder d = new StringBuilder( "qwerty", 100 );
// 4
StringBuilder e = new StringBuilder( "qwerty", 1, 3, 100 );// 5
13
14. Основные элементы класса System.Text.StringBuilder
AppendДобавление в конец строки. Разные варианты метода
позволяют добавлять в строку величины любых
встроенных типов, массивы символов, строки и подстроки
типа string
AppendFormat Добавление форматированной строки в конец строки
Capacity
Получение или установка емкости буфера. Если
устанавливаемое значение меньше текущей длины строки
или больше максимального, генерируется исключение
ArgumentOutOfRangeException
Insert
Вставка подстроки в заданную позицию
Length
Длина строки (количество символов)
MaxCapacity
Максимальный размер буфера
Remove
Удаление подстроки из заданной позиции
Replace
Замена всех вхождений заданной подстроки или символа
новой подстрокой или символом
Преобразование в строку типа string
ToString
14
15. Пример
Console.Write( "Введите зарплату: " );double
salary = double.Parse( Console.ReadLine() );
StringBuilder a = new StringBuilder();
a.Append( "зарплата " );
a.AppendFormat( "{0, 6:C} - в год {1, 6:C}",
salary, salary * 12 );
Console.WriteLine( a );
a.Replace( "р.", "тыс.$" );
Console.WriteLine( "А лучше было бы: " + a );
Введите зарплату: 3500
зарплата 3 500,00р. - в год 42 000,00р.
А лучше было бы: зарплата 3 500,00тыс.$ - в год 42 000,00тыс.$
15
16. Пример 6
Если методы String не предоставляют функциональных возможностей,которые
необходимы
для изменения отдельных символов в строке, можно
string question
=
использовать
StringBuilder,
чтобы
изменить
отдельные
символы
"на
"hOW DOESобъект
mICROSOFT
wORD
DEAL
WITH THE
cAPS lOCK
KEY?";
месте", а затем создать новую строку для сохранения результатов с
System.Text.StringBuilder sb = new
использованием методов StringBuilder. В следующем примере
System.Text.StringBuilder(question);
предположим,
что необходимо изменить исходную строку определенным
for (int j =а затем
0; j < sb.Length;
j++) {
образом,
сохранить результаты
для дальнейшего использования.
if (System.Char.IsLower(sb[j]) == true)
sb[j] = System.Char.ToUpper(sb[j]);
else if (System.Char.IsUpper(sb[j]) == true)
sb[j] = System.Char.ToLower(sb[j]); }
// Store the new string.
string corrected = sb.ToString();
System.Console.WriteLine(corrected);
// Output: How does Microsoft Word deal with the Caps Lock key?
16