Слайд 1Лекция 18.
Строки
дисциплина «Программирование»
Козьминых Н.М.
Слайд 3Символы (char)
Козьминых Н.М.
16-разрядные значения без знака в пределах от 0
до 65 535 (уникод (Unicode))
char ch;
ch = 'Z';
Управляющие последовательности
символов
Слайд 4Коды символов Юникод (таблица) http://ir2.ru/charcod5.htm
Козьминых Н.М.
Слайд 5Строки (string)
Козьминых Н.М.
Строка - набор символов, заключенный в двойные кавычки
Строки
являются объектами, относятся к ссылочным типам
Объявление:
1) string str = "Пример
строки";
2) char[] charArray = {'e', 'x', 'a', 'm', 'p', 'l', 'e'};
string str = new string(charArray);
В System.String предоставляется набор методов для определения длины символьных данных, поиска подстроки в текущей строке, преобразования символов из верхнего регистра в нижний и наоборот, и т.д.
Слайд 6Методы работы со строками
Козьминых Н.М.
Слайд 7Методы работы со строками
Козьминых Н.М.
Слайд 8Пример
Козьминых Н.М.
// Сравним первые две строки
string s1 = "это строка";
string
s2 = "это текст, а это строка";
if (String.CompareOrdinal(s1, s2) !=
0)
listBox9.Items.Add("Строки s1 и s2 не равны");
if (String.Compare(s1, 0, s2, 13, 10, true) == 0)
listBox9.Items.Add("При этом в них есть одинаковый текст");
// Конкатенация строк
listBox9.Items.Add(String.Concat("\n" + "Один, два ", "три, четыре"));
// Поиск в строке - Первое вхождение подстроки
if (s2.IndexOf("это") != -1)
listBox9.Items.Add("Слово \"это\" найдено в строке, оно" +
"находится на: " + s1.IndexOf("это") + " позиции");
Слайд 9Пример
Козьминых Н.М.
// Последнее вхождение подстроки
if (s2.LastIndexOf("это") != -1)
listBox9.Items.Add("Последнее вхождение
слова \"это\" находится"
+ " на " + s2.LastIndexOf("это") +
" позиции");
// Поиск из массива символов
char[] myCh = { 'Ы', 'х', 'т' };
if (s2.IndexOfAny(myCh) != -1)
listBox9.Items.Add("Один из символов из массива ch " +
" найден в текущей строке на позиции " + s2.IndexOfAny(myCh));
// Определяем начинается ли строка с заданной подстроки
if (s2.StartsWith("это текст") == true)
listBox9.Items.Add("Подстрока найдена!");
// Определяем содержится ли в строке подстрока
string myOS = Environment.OSVersion.ToString();
if (myOS.Contains("NT 6.1"))
listBox9.Items.Add("Ваша операционная система Windows 7");
Слайд 10Класс StringBuilder
Козьминых Н.М.
Для строки класса String выделяется ровно столько памяти,
сколько необходимо для ее хранения
Класс StringBuilder имеет два главных свойства:
Length,
показывающее длину строки, содержащуюся в объекте в данный момент
Capacity, указывающее максимальную длину строки, которая может поместиться в выделенную для объекта память
Класс StringBuilder:
выделяет больше памяти, чем нужно в данный момент
модификация строки происходит внутри блока памяти – эффективно для добавления подстрок и замену символов
имеет свойство удваивать свою емкость, когда происходит переполнение, а новое значение емкости не установлено явно
Слайд 11Методы класса StringBuilder
Козьминых Н.М.
Слайд 12Пример
Козьминых Н.М.
StringBuilder str = new StringBuilder("пример класса");
listBox9.Items.Add(str.ToString());
str.Append(" - добавляемый текст");
listBox9.Items.Add(str.ToString());
Random
ran = new Random();
for (int i = 'в'; i >=
'a'; i--)
str = str.Replace((char)i, (char)(ran.Next(48,58)));
listBox9.Items.Add(str.ToString());
for(int i = 48; i < 58; i++)
listBox9.Items.Add((char)i);
Слайд 14Пример
Козьминых Н.М.
// все цифры переставить в начало
string ss = "ad2e57b6", temp;
int kol = 0;
for(int i = 0; i < ss.Length; i++){
if (Char.IsNumber(ss, i)) {
temp = ss.Substring(i, 1);
ss = ss.Remove(i, 1);
ss = ss.Insert(kol, temp);
kol++;
}
}
textBox1.Text = ss;
Слайд 15Пример
Козьминых Н.М.
// удалить слова, длина которых равна заданному значению
int z = 3;
string ss = "asd tg dfgh yui hj erf";
string[] arr = ss.Split(' ');
StringBuilder res = new StringBuilder();
foreach(string item in arr){
if (item.Length != z)
res.Append(item).Append(' ');
}
textBox1.Text = res.ToString();
Слайд 16Вопросы…
Спасибо за внимание
Козьминых Н.М.