Как работать со строками в C#: базовые операции
Сегодня речь пойдет о строках в языке C#. Мы рассмотрим основные операции со строчками, например, разбиения и склейку строк (c# string split). К концу материала вы уверенно овладеете всеми базовыми инструментами обработки строк в C#.
Содержание статьи:
1. Вступление
2. Получение строки из массива
3. Конкатенация строк
4. Конструктор
5. Индексаторы
6. Изменение регистра
7. Разделение строк, подстроки (c# string split)
7.1 Разбиение строк: примеры (split c# пример)
8. Обрезка строк
9. Вставка текста
10. Сравнение строк
11. В заключение
Вступление
Для начала давайте вспомним, что такое строка вообще. Это объект типа string
, который служит для хранения и передачи текста. Строковый тип данных образуется с помощью строкового литерала. Проще говоря, для создания строки необходимо указать тип данных и присвоить переменной текст в кавычках.
string sentence = “Набор текстовых символов” // пример присвоения строковой переменной sentence
Код вывода в консоли обычного текста:
using System; namespace test1 { class Program { static void Main(string[] args) { Console.WriteLine("Пустая строчка"); //строковый литерал } } }
Результат выполнения кода C#
Получение строки из массива
Строковый объект получается из символьного массива. Предположим, у нас есть набор отдельных букв 'h', 'i', 'g', 'h', 'l', 'o', 'a', 'd'
, и мы составляем из них целую строку:
using System; namespace Array_to_stroka { class Program { static void Main(string[] args) { char[] chararray = { 'h', 'i', 'g', 'h', 'l', 'o', 'a', 'd'}; //символьный массив string str = new string(chararray); // объединение символов в строковую переменную Console.WriteLine(str); //строковый литерал } } }
Результат выполнения кода C#
Тип данных string
является неизменяемым. Создав один раз строку, вы уже не можете поменять ее содержимое. При этом объект string
является ссылочным — когда вы меняете содержимое объекта, меняется ссылка на область памяти, где оно содержится. Это не является проблемой — впоследствии сборщик мусора удалит неиспользуемые строки.
Пример изменения строки:
string s = "Это моя метафора"; s = "Это новая метафора"; Console.WriteLine(s); // отображение на экране
Конкатенация строк
Редактируя строковые данные, мы часто прибегаем к операции конкатенации — когда строка добавляется в конец другой строки.
Делается это с помощью логического оператора сложения:
using System; namespace test { class dobavlenie_strok { static void Main(string[] args) { string start = "Highload "; //первая часть string end = "today 😉 "; // вторая часть string final = start + end; // final = "Highload today" Console.WriteLine(final); // Печать результата } } }
Результат выполнения кода C#
Альтернативный способ конкатенации строк — используя метод Concat
:
string start = "Гуд "; string end = "тудей!"; string concat = string.Concat(start, end); // Гуд тудей!
Еще один способ объединения строк — методом Join
:
string n3 = "I’ve got"; string n4 = "a"; string n5 = "beautiful"; string n6 = "day"; string n7 = "!"; string[] values = new string[] { n3, n4, n5, n6, n7 }; String n8 = String.Join(" ", values); Console.WriteLine(n8); // Печать в консоли результат — I’ve got a beautiful day!
Результат выполнения кода C#
Конструктор
В C# имеется возможность создания строк при помощи конструкторов класса String
. Так, например, конструкция string = String('P', 11)
позволит вывести «PPPPPPPPPPP»:
string result = new String('P', 11); Console.WriteLine(result); // печать результата
Результат выполнения кода C#
Создание строки возможно из простого символьного массива:
{ class sborka { static void Main(string[] args) { string final = new String(new char[] { 'Е', 'л', 'е', 'н', 'а' }); Console.WriteLine(final); // печать результата на экран } } }
Результат выполнения кода C#
Индексаторы
Поскольку строка является набором символов, в любой момент можно обратиться к каждому из элементов. Для этого применяется индексатор, число, которое считается, как и в массиве — с нуля:
string s1 = "Highload"; char ch1 = s1[0]; Console.WriteLine(ch1); // Отображение в консоли элемента “H” с индексом ноль Console.WriteLine(s1.Length); // Отображение в консоли длины строки
Результат выполнения кода C#
Изменение регистра
В процессе программирования может возникнуть необходимость изменить регистр текстового сообщения. Скажем, если вы разрабатываете голосовой помощник, сообщения, заложенные в логику вашего помощника, не должны реагировать на регистр — в этом случае можно использовать следующий метод:
string s = "Хочешь, я расскажу тебе секрет?"; string t = s.ToUpper(); // ХОЧЕШЬ, Я РАССКАЖУ ТЕБЕ СЕКРЕТ?
Результат выполнения кода C#
Обратная функция — ToLower
, меняет регистр строк на нижний:
string s = "Саша Сережа Елена Андрей Екатерина Мила"; string t = s.ToLower(); // саша сережа елена андрей екатерина мила
Результат выполнения кода C#
Еще один вариант изменения регистра осуществляется с помощью метода ToTitleCase
. Он используется в тех случаях, когда необходимо сделать заглавными первые буквы всех слов. Когда метод встречает слово, состоящее из заглавных букв, он считает это слово аббревиатурой и оставляет как есть. Для ToTitleCase
необходимо указывать пространство имен System.Globalization
, которое содержит информацию о классах разных культур и регионов:
using System; using System.Globalization; public class Example { public static void Main() { string[] values = { "сказка, рассказанная на ночь", "беЖиТ дорога подО Мной", "Russia today", "Возвращение Шерлока Холмса", "СССР и дети"}; TextInfo ti = CultureInfo.CurrentCulture.TextInfo; foreach (var value in values) Console.WriteLine("{0} --> {1}", value, ti.ToTitleCase(value)); } }
результат выполнения кода C#
Разделение строк, подстроки (c# string split)
Часто приходится разделять текст (split c#) на фрагменты. Применим метод IndexOf ()
, который определяет вхождение подстроки по индексу. Предположим, необходимо разделить два предложения, разделенные точкой. В этом случае код будет выглядеть так:
string myString = "Highload.tech"; // исходный текст int index = myString.IndexOf(".") + 1; // определение индекса подстроки по точке string fragment_stroki= myString.Substring(index); // создание подстроки Console.WriteLine(fragment_stroki); // печать подстроки по индексу
Результат выполнения кода C#
Разбиение строк: примеры (split c# пример)
Давайте посмотрим на примеры альтернативного разбиения строк в C#. Метод Substring
также может применяться для разделения строк. Он либо просто возвращает текст с обозначенного символа, либо делает это на указанную длину:
using System; using System.Globalization; public class cut { public static void Main() { string fragment1 = "Highload.tech!"; // исходный текст string fragment2 = fragment1.Substring(9,5); // создание строки по индексу и длине Console.WriteLine(fragment2); // вывод на экран today } }
Результат выполнения кода C#
Также можно было использовать:
string fragment1 = "Highload.tech!"; // исходный текст string fragment2 = fragment1.Substring(9);
В этом случае второй элемент будет today!
(с восклицательным знаком включительно).
Методом Split
строковые данные преобразуются в массив подстрок:
string text = "И теперь уходим понемногу"; // string[] slova= text.Split(' '); // Разделение на коллекцию слов Console.WriteLine(slova[0]); // Печать элемента с индексом 0 Console.WriteLine(slova[3]); // Печать элемента с индексом 3
Результат выполнения кода C#
Обрезка строк
При помощи метода Remove()
удаляется группа символов в строковых данных. В параметрах метода указывается номер символа, после которого все последующие элементы должны быть удалены.
string s = "Казнить, невозможно помиловать"; Console.WriteLine(s.Remove(7)); // обрезка текста, начиная с пятого символа Console.ReadLine();
Результат выполнения кода C#
Вставка текста
Наиболее удобный способ вставки подстроки — используя метод Insert()
. В его аргументах следует указывать номер символа, на место которого будет выполнена вставка.
string stroka = "Highloadtoday"; Console.WriteLine(stroka.Insert(8, ".")); // вставляем точку на место 8 символа Console.ReadLine();
Результат выполнения кода C#
Сравнение строк
Задача сравнения строк выполняется методом CompareTo()
. Результатом такого сравнения является число, принимающее значение 1, 0 или -1:
- 1 — сравниваемый текст начинается с символа, раньше по алфавиту;
- 0 — означает, что строки идентичны;
- -1 — когда сравниваемый текст начинается с символа позже по алфавиту.
class appz { static void Main(string[] args) { string first = "Highload"; string second = "Zighload"; int t = first.CompareTo(second); // t = -1 Console.WriteLine(t); Console.ReadLine(); } }
Результат выполнения кода C#
Строки можно сравнивать также методом Compare()
:
String.Compare("Stroka1", "Stroka2");
Когда в задачу не входит учитывание регистра, в методе CompareTo
используется аргумент true
:
String.Compare("stroka1", "Stroka2", true);
Еще один прием для сравнения строк — метод Equals
. Он записывается либо с одним аргументом, либо с двумя:
string city = "Kiyv"; bool sravnenie; sravnenie = city.Equals("Kiyv"); Console.WriteLine(sravnenie); sravnenie = city.Equals("Kiev"); Console.WriteLine(sravnenie); sravnenie = String.Equals(city, "Kiyv"); Console.WriteLine(sravnenie); sravnenie = String.Equals(city, "Kiev"); Console.WriteLine(sravnenie); Console.ReadLine();
Результат выполнения кода C#
В заключение
В C# представлены все базовые операции по работе со строкой. Они вполне понятны даже для новичков. Надеемся, вам было полезно! Для закрепления материала по работе со строковыми переменными можно посмотреть видео:
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: