Какая функция корректно сравнивает две подстроки
Перейти к содержимому

Какая функция корректно сравнивает две подстроки

Строки в 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++?

в качестве входных данных, третье условие «if» будет возвращено True

Программирование и разработка

Сравнение строк — очень распространенная задача для любого языка программирования. Он в основном используется для проверки данных, например для проверки имени пользователя и пароля для входа в систему. Сравнение строк можно выполнить с помощью оператора сравнения или встроенных функций. В 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, и появится следующий результат.

в качестве входных данных, третье условие «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, и появляется следующий результат.

После выполнения кода для обоих входных значений дается строковое значение 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 предшествует второй строке:

Дайте знать, что вы думаете по этой теме материала в комментариях. За комментарии, лайки, подписки, отклики, дизлайки низкий вам поклон!

Пожалуйста, оставляйте ваши отзывы по текущей теме материала. Мы очень благодарим вас за ваши комментарии, дизлайки, лайки, отклики, подписки!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *