Строки в C#: методы работы со строками
В предыдущей статье мы рассмотрели основные моменты, касающиеся работы со строками в C#: создание строк, неизменность строк, использование регулярных и буквальных литералов в строках и так далее. Сегодня мы продолжим разбираться с этой важной и довольно интересной темой и рассмотрим основные методы работы со строками в C#.
Основные методы работы со строками в C#
Функциональность класса System.String наиболее полно раскрывается через его методы, основными из которых являются следующие:
- Compare — сравнивает две строки с учетом текущих региональных настроек (локали) пользователя
- CompareOrdinal — сравнивает две строки без учета локали
- Contains — проверяет, содержится ли заданная подстрока в строке
- Concat — объединяет строки
- CopyTo — копирует часть строки, начиная с определенного индекса, в массив
- EndsWith — проверяет совпадает ли конец строки с подстрокой
- Format — форматирует строку
- IndexOf — находит индекс первого вхождения символа или подстроки в строке
- Insert — вставляет в строку подстроку
- Join — соединяет элементы массива строк
- LastIndexOf — находит индекс последнего вхождения символа или подстроки в строке
- Replace — заменяет в строке символ или подстроку другим символом или подстрокой
- Split — разделяет одну строку на массив строк
- Substring — извлекает из строки подстроку, начиная с указанной позиции
- ToLower — переводит все символы строки в нижний регистр
- ToUpper — переводит все символы строки в верхний регистр
- Trim — удаляет начальные и конечные пробелы из строки
Рассмотрим представленные методы более подробно.
Сравнение строк в C#
Для сравнения двух строк в C# удобно использовать метод Compare .
Результатом выполнения метода является целое число Int32. Это число означает следующее:
| Результат Compare | Что означает |
| Меньше нуля | strA предшествует strB в порядке сортировки (стока strA меньше строки strB ). |
| Нуль | strA занимает ту же позицию в порядке сортировки, что и объект strB (строки равны) |
| Больше нуля | strA следует за strB в порядке сортировки (стока strA больше строки strB ). |
Вернет значение 0 так как строки равны.
У класса String есть также несколько перегруженных методов Compare , позволяющих провести настройку способа сравнения строк. Например, можно сравнивать строки, игнорируя регистр:
или определить свои настройки сравнения строк, используя следующий вариант метода Compare :
Несмотря на то, что метод Compare по умолчанию предназначен для сравнения строк с учётом локали, используя перегруженные версии метода, можно сравнивать строки и без учёта региональных настроек, например, воспользовавшись вот таким способом:
Сравнение строк в C# без учёта региональных настроек
Метод CompareOrdinal сравнивает два объекта String , оценивая числовые значения соответствующих объектов Char в каждой строке. Результат выполнения метода такой же, как и у предыдущего метода Compare (см. таблицу выше).
Проверка вхождения подстроки в строку в C#
Метод Contains проверяет, входит ли заданная подстрока в строку. Этот метод не статический, поэтому использовать его необходимо только после создания объекта, то есть следующим образом:
В примере выше мы проверяем содержится ли подстрока «ока» в строке «Строка» . Очевидно, что результатом выполнения метода будет true .
Объединение строк в C# (конкатенация строк)
Для объединения строк в C# удобно использовать метод Concat . Этот метод принимает два или более параметров, позволяя объединять не только строки, но и строковые представления любых объектов. Например:
Также возможно объединять и массивы строк:
Объединение строк с использованием разделителя в C#
Для того, чтобы объединить несколько строк с использованием заданного разделителе, в C# используется метод Join . В качестве входных параметров метод Join принимает массив или коллекцию строк и символ-разделитель, например:
Для приведенного выше примера в консоли мы получим следующую объединенную строку:
Копирование строк в C#
Для копирования строк в C# можно воспользоваться не статическим методом CopyTo . Этот метод копирует из строки часть символов, начиная с заданной позиции, и вставляет их в массив символов, также с указанной позиции. Сигнатура метода следующая:
Для того, чтобы продемонстрировать работу метода, воспользуемся следующим примером:
в результате выполнения мы получим следующий вывод в консоли:
В этом примере из строки s6 копируется 4 символа, начиная с символа с индексом 2 (так как нумерация начинается с нуля, то первый копируемый символ r ) и вставляется в массив charArr , начиная с первого элемента (с индексом 0 )
Также можно воспользоваться статическим методом Copy для создания полной копии строки:
Проверка совпадения строк в C#
Достаточно часто при работе со строками приходится проверять вхождение одной подстроки в другую. Для выполнения проверки совпадения строк и подстрок в C# можно воспользоваться двумя методами:
Первый метод ( EndWith ) проверяет заканчивается ли проверяемая строка подстрокой value , а второй, соответственно, проводит проверку на наличие подстроки value в начале строки. Оба метода имеют перегрузки. Пример:
Форматирование строк в C#
Помимо использования регулярных и буквальных литералов при работе со строками, мы также можем создавать строки в C# используя метод Format . Для того, чтобы раскрыть все возможности форматирования строк, думаю, что потребуется написать отдельную статью. Сейчас же я просто продемонстрирую некоторые основные возможности использования этого метода.
Результатом будет следующая строка:
Поиск в строках C#
Ещё одной частой задачей при работе со строками в C# является поиск символов и подстрок в строках. Поиск в строке можно осуществить, в том числе, с использованием метода IndexOf , имеющего несколько перегрузок:
Этот метод возвращает индекс первого вхождения указанного символа или подстроки в строку. Например,
Результатом выполнения будут следующие строки в консоли:
Индекс первого символа искомой подстроки 18
Соответственно, чтобы найти последнее вхождение символа или подстроки в строку, достаточно воспользоваться методом:
Вставка подстроки в строку C#
Для вставки одной строки в другую в C# можно воспользоваться методом Insert :
Этот метод вставляет в строку, начиная с индекса startIndex подстроку value и возвращает в результате новый экземпляр строки. Например,
Замена символов и подстрок в строках C#
Для замены символов и подстрок в строках C# используется метод Replace:
Например, заменим все символы o с строке на символы А :
Разделение строк на подстроки в C#
Разделение строк на подстроки в C# также является достаточно частой задачей в программировании. Для этого можно воспользоваться методом Split
В качестве параметров метод Split принимает один или несколько символов ( Char ), используемых в качестве разделителя, а на выходе возвращает массив строк. Рассмотрим работу метода Split на примере
Здесь в качестве разделителей мы используем два символа — пробел и запятую. Результатом выполнения кода будет следующий вывод в консоли:
Извлечение подстрок из строки в C#
Для извлечения подстрок из строки используется метод Substring :
При использовании первого варианта метода (с одним параметром) из строки извлекается подстрока, начинающаяся с индекса startIndex и, при этом, извлечение происходит до конца строки. Во втором случае подстрока извлекается также, начиная с индекса startIndex , однако длина извлекаемой подстроки ограничивается вторым параметром — length .
Пример использования метода представлен ниже:
Изменение регистра строк в C#
Для изменения регистра символов в строке в C# можно воспользоваться двумя методами:
Метод ToLower меняет регистр всех символов в строке на нижний, а метод ToUpper , напротив — меняет регистр всех символов в строке на верхний. Пример
Обрезка строк в C#
Иногда требуется избавиться в строке от лишних символов в начале, в конце или одновременно и вначале и в конце. «Лишними» могут быть как обычные проблелы, так и прочие символы. Для обрезки строки в C# можно воспользоваться методами Trim* :
По названию метода можно понять смысл его работы. Так, если используется метод Trim() , то обрезка строки происходит и сначала и с конца, если же используется TrimEnd() , то строка обрезается только с конца. При этом, если используется версия метода без параметров, то из строки удаляются лидирующие или замыкающие пробелы, иначе — определенные в параметрах метода символы. Например,
Итого
В этой статье мы рассмотрели наиболее часто используемые методы работы со строками в C#. Конечно, работа со строками не ограничивается исключительно рассмотренными выше методами, однако, для начала работы нам этого будет достаточно. В дальнейшем мы рассмотрим также отдельно вопросы по форматированию строк, использование интерполяции строк и так далее.
Как сравнить строку в C++?

Программирование и разработка
Сравнение строк — очень распространенная задача для любого языка программирования. Он в основном используется для проверки данных, например для проверки имени пользователя и пароля для входа в систему. Сравнение строк можно выполнить с помощью оператора сравнения или встроенных функций. В C ++ используются две функции сравнения строк: strcmp () и compare (). ЗЬгстр () является библиотекой функция C для сравнения двух строк. C ompare () — это встроенная функция C ++ для сравнения двух строк. В этом руководстве были объяснены способы сравнения строк с использованием операторов и функций сравнения.
Предварительные условия:
Прежде чем проверять примеры этого руководства, вы должны проверить, установлен ли компилятор g ++ в системе. Если вы используете Visual Studio Code, установите необходимые расширения для компиляции исходного кода C ++ и создания исполняемого кода. Здесь приложение Visual Studio Code было использовано для компиляции и выполнения кода C ++.
Использование оператора сравнения для сравнения строки
Самый распространенный способ сравнения строк в C ++ — использовать оператор сравнения. Это операторы равенства (==) и не равенства (! =). Создайте файл C ++ со следующим кодом для сравнения двух строковых значений с помощью оператора сравнения. Согласно коду, URL-адрес будет взят у пользователя и сравнен с другими строками с помощью оператора равенства (==). Если входное значение совпадает с любой строкой условия ’if’, то будет напечатано конкретное сообщение; в противном случае будет отображаться сообщение части «else».
//Include necessary library
#include<iostream>
usingnamespace std ;
intmain ( ) <
// Declare a string variable
string url_addr ;
// Take a url address from the user
cout <> url_addr ;
// Compare the input value with another string using equivalent operator
if ( url_addr == «google.com» )
cout << «It is a search engine wensite.» << endl ;
elseif ( url_addr == «jooble.org» )
cout << «It is a job searching website.» << endl ;
elseif ( url_addr == «linuxhint.com» )
cout << «It is a blog website.» << endl ;
else
cout << «No information is added for this site.» << endl ;return0 ;
>
После выполнения кода, если пользователь ввел » linuxhint.com » в качестве входных данных, третье условие «if» будет возвращено True, и появится следующий результат.

Использование функции compare () для сравнения строки
Функция compare () сравнивает две строки и возвращает 0, 1 или −1 в зависимости от результата сравнения. Значение возвращаемых значений приведено ниже.
- Функция вернет 0, если обе сравниваемые строки равны.
- Функция вернет 1, если первая строка больше второй.
- Функция вернет −1, если первая строка меньше второй.
Синтаксис:
Создайте файл C ++ со следующим кодом для сравнения двух строковых значений с двумя входными значениями с помощью функции compare (). Аутентификация любого пользователя может быть проверена путем сравнения значений, представленных пользователями, со значениями аутентифицированного пользователя. Этот процесс аутентификации реализован в следующем коде. Действительный адрес электронной почты и пароль были сохранены здесь в двух строковых переменных. Затем эти значения сравниваются с адресом электронной почты и паролем, полученным от пользователя с помощью функции compare (). В коде используется логический оператор И для аутентификации пользователя. Сообщение об успешном выполнении будет напечатано, если обе функции compare () вернут True. В противном случае будет напечатано сообщение об ошибке.
//Include necessary library
#include<iostream>
usingnamespace std ;
intmain ( ) <
//Initialialize two string variables
string email ( «admin@example.com» ) ;
string password ( «linuxhint» ) ;
//Declare two string variables
string user_email ;
string user_password ;//Take the email address from the user
cout <> user_email ;//Take the password from the user
cout <> user_password ;//Check the username ans the password are valid or invalid
if ( user_email. compare ( email ) == && user_password. compare ( password ) == )
cout << «Authentication Successful.» << endl ;
else
cout << «Email or password is invalid.» << endl ;return0 ;
>
После выполнения кода, если пользователь ввел » fahmida@gmail.com » в качестве адреса электронной почты и » 12345 ″ в качестве пароля, третье условие «если» будет возвращено как ложное, и появится следующий результат.

После повторного выполнения кода, если пользователь ввел » admin@example.com » в качестве адреса электронной почты и » linuxhint » в качестве пароля, третье условие «if» будет возвращено True, и появится следующий результат.

Использование функции strcmp () для сравнения строки
Strcmp () — еще одна функция для сравнения строк в C ++. Он возвращает истину, если обе сравниваемые строки равны. Входные параметры, принимаемые этой функцией, отличаются от функции compare (). Функция сравнения принимает строковое значение в качестве параметра, а функция strcmp () принимает массив символов в качестве параметра. Синтаксис этой функции приведен ниже.
Синтаксис:
Создайте файл C ++ со следующим кодом для сравнения двух строк с помощью функции strcmp (). В коде объявлены два символьных массива из 100 элементов для хранения строковых значений, принимаемых пользователями. Функция getline () используется для хранения введенных пользователем данных в переменных массива char. Затем функция strcmp () использовала для проверки того, совпадают ли входные значения или нет. Если функция вернет True, будет напечатано сообщение об успешном выполнении; в противном случае будет напечатано сообщение об ошибке,
//Include necessary libraries
#include <cstring>
#include <iostream>
usingnamespace std ;
intmain ( ) <
//Delare two string variables
char chrData1 [ 100 ] , chrData2 [ 100 ] ;//Take the first string data
cout << «Enter the first string:» ;
cin. getline ( chrData1 , 100 ) ;
//Take the second string data
cout << «Enter the second string:» ;
cin. getline ( chrData2 , 100 ) ;if ( strcmp ( chrData1 , chrData2 ) == )
printf ( «The strings are equal \n « ) ;
else
printf ( «The strings are not equal \n « ) ;return0 ;
>
После выполнения кода для обоих входных значений дается строковое значение hello, и появляется следующий результат.

Заключение
В этом руководстве на трех простых примерах были показаны три способа сравнения строк в C ++. Как использование оператора сравнения, так и встроенные функции для проверки равенства строк были описаны в этом руководстве, чтобы помочь новым программистам на C ++.
Изучаем Java: сравнение строк
Класс String Java содержит ряд методов для сравнения строк. Ниже приведены некоторые методы класса string java:
- Оператор == ;
- Метод equals() ;
- equalsIgnoreCase ;
- Метод compareTo() .
Java string методы — использование оператора ==
Оператор == проверяет ссылки, а не значения. Это означает, что он проверяет, являются ли сравниваемые элементы одним и тем же объектом. Если две переменные String указывают на один и тот же объект в памяти, сравнение возвращает true . В противном случае — false :
Здесь литералы интернируются компилятором и таким образом ссылаются на один и тот же объект:
Приведенные выше переменные String указывают на разные объекты:
Приведенные выше переменные String также указывают на разные объекты.
Оператор ‘==’ не сравнивает строки в java, а только ссылки, на которые они строки.
Метод String equals()
В Java сравнение строк equals проверяет исходное содержимое строки. Он возвращает true , если параметр — это объект String , который представляет собой ту же строку символов, что и объект:
Если нужно проверить, имеют ли две строки одинаковое значение, можно использовать Objects.equals() .
String equalsIgnoreCase
Метод equalsIgnoreCase() осуществляет Java сравнение строк лексикографически, игнорируя различия регистра. Значение true возвращается только тогда, когда аргумент является объектом String , который представляет ту же последовательность символов, что и объект. Если нужно проверить строки на равенство без учета регистра, лучше использовать метод equalsIgnoreCase класса String .
Метод String compareTo()
Метод compareTo() используется, когда нужно определить порядок строк лексикографически. Он сравнивает значения char аналогично методу equals() . Если две строки точно совпадают, метод compareTo() вернет значение 0 ( результат = 0 ). При сравнении двух строк Java он возвращает положительное ( результат > 0 ) целое число, если первый объект String следует за второй строкой. Метод compareTo() возвращает отрицательный результат ( результат < 0 ), если первый объект String предшествует второй строке:
Дайте знать, что вы думаете по этой теме материала в комментариях. За комментарии, лайки, подписки, отклики, дизлайки низкий вам поклон!
Пожалуйста, оставляйте ваши отзывы по текущей теме материала. Мы очень благодарим вас за ваши комментарии, дизлайки, лайки, отклики, подписки!