- •Массивы
- •Класс Array
- •Рассмотрим пример использования класса Array. Для этого создадим массив и обеспечим возможность поиска в нем элементов.
- •Работа со строками в c#
- •Управляющие последовательности и специальные символы в строках
- •Использование класса System.Text.StringBuilder
- •Основные операторы языка c#
- •Цикл foreach
Работа со строками в c#
По аналогии с массивами все строки в C# происходят от одного базового класса - System.String, в котором реализовано достаточно много различных методов, осуществляющих всевозможные операции над строками. Наиболее интересные методы класса String представлены ниже.
Length |
Позволяет получить количество символов в строке. |
Concat() |
Позволяет соединить несколько строк или переменных типа object. |
CompareTo() |
Позволяет сравнить две строки. В случае равенства строк результат выполнения функции равен нулю. При положительном значении функции большей является строка, для которой вызывался метод. |
Copy() |
Создает новую копию существующей строки. |
Format() |
Применяется для форматирования строки с использованием различных примитивов (строк и числовых данных) и подстановочных выражений вида {0}. |
Insert() |
Позволяет вставить одну строку внутрь существующей. |
Remove() Replace() |
Удаляют или заменяют символы в строке. |
ToUpper() ToLower() |
Преобразуют все символы строки в строчные или прописные. |
Chars |
Позволяет получить символ, находящийся в определенной позиции строки. |
Join() |
Создает строку, соединяя заданные строки и разделяя их строкой-разделителем. |
Replace() |
Заменяет один символ строки другим. |
Split() |
Возвращает массив строк с элементами - подстроками основной строки, между которыми находятся символы-разделители. |
Substring() |
Позволяет получить подстроку основной строки, начинающуюся с определенного символа и имеющую заданную длину. |
Trim() |
Удаляет пробелы либо набор заданных символов в начале и конце основной строки. |
ToCharArray() |
Создает массив символов и помещает в него символы исходной строки. |
При работе со строками в C# необходимо учитывать следующее. Тип string является ссылочным типом. Однако, несмотря на это, при использовании операций сравнения происходит сравнение значений строковых объектов, а не адресов этих объектов, размещенных в оперативной памяти. Кроме того, оператор "+" объекта string перегружен так, что при его использовании используется метод Concat().
Рассмотрим несколько примеров использования возможностей работы со строками.
В следующем примере функция MakeLine создает строку, которая состоит из символов, получающихся путем несложных вычислений. Результаты вычислений заносятся в массив строк. Таким образом, массив sArr после завершения цикла содержит значения всех полученных чисел. После этого, используя разделитель, передаваемый в функцию в качестве аргумента, а также функцию Join, значения всех ячеек массива sArr объединяются в строку:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(MakeLine(0, 5, ", "));
Response.Write("</br>");
Response.Write(MakeLine(1, 6, " "));
Response.Write("</br>");
Response.Write(MakeLine(9, 9, ": "));
Response.Write("</br>");
Response.Write(MakeLine(4, 7, "< "));
}
private static string MakeLine(int initVal, int multVal, string sep)
{
string[] sArr = new string[10];
for (int i = initVal; i < initVal+10; i++)
sArr[i-initVal] = String.Format("{0,-3}", i * multVal);
return String.Join(sep, sArr);
}
Результат работы программы представлен на рис. 3.5.
Рис. 3.5.Результат работы программы с использованием функции Join
Довольно часто при работе со строками возникает необходимость разделить строку на подстроки, отделенные друг от друга заданными символами-разделителями. В следующем примере задается строка символов, в которой присутствует несколько символов-разделителей. При помощи функции Split данная строка разделяется на подстроки, которые затем выводятся на экран каждая в отдельной строке. Для задания символов-разделителей используется массив символов. В этом примере также применяется функция Trim, необходимая в данном случае для того, чтобы убедиться в том, что заданная строка не состоит из одних лишь пробелов. Исходный код данного примера приведен ниже.
string words = "строка, содержащая несколько слов, а также
знаков пунктуации: таких как двоеточие и точка.";
string [] split = words.Split(new Char [] {' ', ',', '.', ':'});
foreach (string s in split)
{
if (s.Trim() != "")
Response.Write(s+"</br>");
}
Итогом работы данной программы будет следующий результат, изображенный на рис. 3.6.
Рис. 3.6.Результат работы программы с использованием функции Split