Студопедия — Работа с текстовыми строками
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Работа с текстовыми строками






Текстовые строки – переменные типа string – могут содержать любое количество символов. Каждый символ представлен в кодировке UNICODE, предполагающей представление одного символа в 2 байтах памяти. Работа с текстовыми строками обычно предполагает решение следующих задач: объединить две (или более) строки в одну, вырезать из строки фрагмент, найти в строке заданную подстроку и т.п.

Для текстовых строк определены операции: конкатенации (объединение) строк, эта операция может быть выполнена при помощи оператора + или метода String.Сoncat, сравнение строк: операторы равенства == и! =. Оператор [] служит для доступа (только для чтения) к отдельным символам объекта string (см. пример на следующей странице и Примеры 6.1, 6.2, 6.3).

Например, объединение строк

string str1=" Катя";

string str2=" Иванова";

string res = str1+ " " + str2;

Console.WriteLine(res);

 

Строка res будет следующей: ”Катя Иванова”.

 

Этот же результат можно получить при помощи метода Concat

 

string res1 = String.Concat(str1, " ", str2);

 

В списке аргументов метода Сoncat может быть не более четырех членов. В приведенном выше примере их три.

Текстовые строки имеет сходство с массивами в том смысле, что доступ к отдельным символам осуществляется по индексу (номеру позиции, нумерация начинается с 0). Переход к следующему символу легко осуществляется изменением номера позиции на 1. Однако, следует иметь в виду, что изменение однажды созданной строки не допускается. Чтобы внести требуемые изменения, нужно создать новую строку (см. Пример 6.1) или использовать соответствующий метод.

Для работы со строками определены следующие методы класса String.

 

Метод Substring(n, m) – извлечение подстроки длиной m, начиная с n-го символа. Если m не указано, то выводится весь «хвост» строки, начиная с n-го символа. Например, применение метода Substring для строки res

string str1 = " Катя";

string str2 = " Иванова";

string res = str1 + " " + str2;

Console.WriteLine(res);

string res2 = res.Substring(5, 7);

Console.WriteLine(res2);

Метод Insert(n, st) – вставка подстроки st в исходную строку, начиная с n-ой позиции. При этом необходимо создать новую переменную, в которой вначале будет автоматически продублирована исходная строка, а затем выполнена необходимая операция. (Заметим, что в C# прямая модификация существующей строки невозможна.) Например,

string res3 = " Катя";

string res4 = res3.Insert(4, " Иванова");

Console.WriteLine(res4);

В результате в res4 будет ”Катя Иванова”.

Метод Replace(st, st1) – замена подстроки st новой подстрокой st1 или замена какого-либо символа во всем тексте на другой символ. Например,

string str = " Катя Иванова";

string str1 = str. Replace( " Катя", " Екатерина");

В результате будет str1 = " Екатерина Иванова".

 

Метод Remove(n, m) удаление из строки фрагмента заданной длины m, начинающегося с заданной позиции n. Например,

string res = " Катя Иванова – моя подруга";

string res1 = res.Remove(4, 8);

Console.WriteLine(res1);

Удаляются 8 символов, начиная с 4-го (пробел после слова ”Катя”). В результате будет res1 = ”Катя – моя подруга”.

Метод ToString() – получение строкового представления объекта числового типа. Внутри скобок может ничего не находиться, или может находиться переменная (строка формата), в которой указан способ форматирования числа, сохраненного в строковом виде, при выводе на консоль. Например,

double a = 5.0;

string s = a.ToString(" f3");

Console.WriteLine(s);

Console.WriteKey();

 

Метод Split ( применается к экземпляру класса String, как и описанные выше методы) осуществляет разбор строки, т.е. позволяет выделить отдельные слова или другие сочетания символов, разделенные какими-либо разделителями, перечисляемыми в массиве символов типа char[], являющемся аргументом метода Split. Например,

string str = " собака, кот играют вместе";

string[] strarr = str.Split(new Char[] {' ', ', '});

foreach(string res in strarr)

{

Console.WriteLine(res);

}

Console.ReadKey();

Здесь формируется массив strarr из слов исходного текста, отделенных друг от друга пробелом или запятой. Список символов-разделителей помещается в массив и передается методу Split в качесте аргумента.

При выводе после первого слова выведена пустая строка, т.к. после первого разделителя сразу следует второй и между ними ничего нет (пусто).

Каждый отдельный символ строки является значением типа char и может быть выделен в переменную типа char. Например, при выполнении оператора

char s = str[5];

для str из предыдущего примера s получит значение a.

 

Для работы с отдельными символами строки можно использовать методы структуры Char. Например, статический метод

Char.IsDigit(s), где s – переменная типа char (отдельный символ строки). Этот метод возвращает значение true, если s – цифра и false, если s – не цифра. Результат выполнения метода показывает, относится ли указанный символ Юникода к категории десятичных цифр или нет.

Использование этого и других подобных методов иллюстрируется в Примере 6.4.

Пример 6.1. В исходном тексте одно слово от другого отделено одним пробелом. Сформировать текст, в котором одно слово от другого отделяется двумя пробелами.

using System;

class Program

{

static void Main()

{

string str1 = " Введите верхний треугольник матрицы по строкам";

string str2 = " ";

for (int i = 0; i < str1.Length; i++)

{

if (str1[i] == ' ')

{

str2 = str2 + str1[i];

}

str2 = str2 + str1[i];

}

Console.WriteLine(str1);

Console.WriteLine(str2);

}

}

Пример 6.2. Выписать из текста слова, начинающиеся и заканчивающиеся на одну и ту же букву.

using System;

class Program

{

static void Main()

{

string str1 = " текст верхний треугольник тееекст теекст треугольник ";

Console.WriteLine(str1);

Console.WriteLine();

int i = 0, j = 0;

while (i < str1.Length)

{

if (str1[i] == ' ')

{

if (str1[i - 1] == str1[j])

{

Console.WriteLine(str1.Substring(j, i - j));

}

j = i + 1; i++;

}

else

{

i++;

}

}

}

}

Пример 6.3. Подсчитать, сколько слов в тексте начинается на букву т. Слова в тексте разделены пробелами.

using System;

class Program

{

static void Main()

{

string str1 = " текст верхний треугольник теекст треугольник верхний";

Console.WriteLine(str1);

Console.WriteLine();

string[] masstr = str1.Split(' ');

int k = 0;

for (int i = 0; i < masstr.Length; i++)

{

if (masstr[i][0] == 'т') k++;

}

Console.WriteLine(k);

Console.ReadKey();

}

}

Пример 6.4. Определить, сколько в заданном тексте отдельно цифр (digit), букв (letter), заглавных букв (upper) и разделителей (separator).

 

using System;

class Program

{

static void Main()

{

string str = " g E r t R 1 2 d K";

Console.WriteLine(str);

Console.WriteLine();

int k = 0, l = 0, m = 0, j = 0;

for (int i = 0; i < str.Length; i++)

{

if (Char.IsDigit(str[i])) k++;

if (Char.IsLetter(str[i])) l++;

if (Char.IsUpper(str[i])) m++;

if (Char.IsSeparator(str[i])) j++;

 

}

Console.WriteLine(" цифры {0} буквы {1} заглавные буквы {2}
разделитель {3}", k, l, m, j);

}

}

Вопросы для самопроверки

1. Как задать текстовую строку.

2. Какие операции определены для текстовых строк.

3. Как получить доступ к отдельным символам строки.

4. Методы, определенные для символьных строк.

5. Методы, определенные для отдельных символов.

6. Как можно изменить строку в процессе выполнения программы.







Дата добавления: 2014-12-06; просмотров: 646. Нарушение авторских прав; Мы поможем в написании вашей работы!



Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

Неисправности автосцепки, с которыми запрещается постановка вагонов в поезд. Причины саморасцепов ЗАПРЕЩАЕТСЯ: постановка в поезда и следование в них вагонов, у которых автосцепное устройство имеет хотя бы одну из следующих неисправностей: - трещину в корпусе автосцепки, излом деталей механизма...

Понятие метода в психологии. Классификация методов психологии и их характеристика Метод – это путь, способ познания, посредством которого познается предмет науки (С...

ЛЕКАРСТВЕННЫЕ ФОРМЫ ДЛЯ ИНЪЕКЦИЙ К лекарственным формам для инъекций относятся водные, спиртовые и масляные растворы, суспензии, эмульсии, ново­галеновые препараты, жидкие органопрепараты и жидкие экс­тракты, а также порошки и таблетки для имплантации...

Понятие и структура педагогической техники Педагогическая техника представляет собой важнейший инструмент педагогической технологии, поскольку обеспечивает учителю и воспитателю возможность добиться гармонии между содержанием профессиональной деятельности и ее внешним проявлением...

Репродуктивное здоровье, как составляющая часть здоровья человека и общества   Репродуктивное здоровье – это состояние полного физического, умственного и социального благополучия при отсутствии заболеваний репродуктивной системы на всех этапах жизни человека...

Случайной величины Плотностью распределения вероятностей непрерывной случайной величины Х называют функцию f(x) – первую производную от функции распределения F(x): Понятие плотность распределения вероятностей случайной величины Х для дискретной величины неприменима...

Studopedia.info - Студопедия - 2014-2024 год . (0.013 сек.) русская версия | украинская версия