Найти символы в строке в JS
Для того, чтобы найти символы в строке можно использовать метод includes . Первым параметром метод принимает символ, который нужно найти, вторым необязательным — позицию, с которой нужно начинать поиск. После выполнения метод возвращает true или false . Смотрите пример:
let res = ‘abcde’.includes(‘ab’); console.log(res);
Результат выполнения кода:
С помощью метода indexOf
Поиск символов в строке возможно провести посредством метода indexOf . В первом параметре метода указываем искомый символ в нужном нам регистре (большие буквы или маленькие). Метод вернет позицию первого совпадения, а если оно не найдено, то вернет -1 . Вторым необязательным параметром можно передать номер символа, откуда следует начинать поиск. Смотрите пример:
let str = ‘ab cd cd cd ef’; let res = str.indexOf(‘cd’); console.log(res);
Результат выполнения кода:
С помощью метода startsWith
Чтобы проверить начинается ли строка с искомого символа следует воспользоваться метода startsWith . Если начинается, то метод возвращает true , а если не начинается, то false . Вторым необязательным параметром метод принимает позицию, с которой начинать проверку (по умолчанию с начала строки). Смотрите пример:
let str = ‘abcde’; let res = str.startsWith(‘abc’); console.log(res);
Результат выполнения кода:
С помощью метода endsWith
Для того, чтобы найти символ с конца строки следует воспользоваться метода endsWith . Если заканчивается, то метод возвращает true , а если не заканчивается,то false . Вторым необязательным параметром можно принудительно указать длину строки. В этом случае проверка будет не настоящего конца строки, а указанного. Смотрите пример:
let str = ‘abcde’; let res = str.endsWith(‘cde’); console.log(res);
Результат выполнения кода:
С помощью метода at
Поиск символа в строке по его индексу можно провести с помощью метода at . В параметре метода мы указываем целое число, которое может быть положительным или отрицательным (в этом случае поиск ведется с конца строки). Смотрите пример:
let res = ‘abcde’.at(0); console.log(res);
Результат выполнения кода:
Смотрите также
- метод includes ,
который ищет строку - метод at ,
который ищет символ по номеру его позиции в строке - метод startsWith ,
который проверяет начало строки - метод endsWith ,
который проверяет конец строки - метод indexOf ,
который осуществляет поиск подстроки
Python: Извлечение символов из строки
Иногда нужно получить один символ из строки. Например, если сайт знает имя и фамилию пользователя, и в какой-то момент требуется вывести эту информацию в формате A. Ivanov. Для этого компьютеру потребуется взять первый символ из имени. В Python есть подходящая операция, которую мы изучим сегодня.
Представим, что из имени Alexander нужно вывести на экран только первую букву. Это выглядит так:
first_name = 'Alexander' print(first_name[0]) # => A
Операция с квадратными скобками с цифрой извлекает элемент по индексу — позицией символа внутри строки. Индексы начинаются с 0 почти во всех языках программирования. Поэтому, чтобы получить первый символ, нужно указать индекс 0 . Индекс последнего элемента равен длине строки минус единица. Обращение к индексу за пределами строки приведет к ошибке:
# Длина строки 9, поэтому последний индекс — это 8 first_name = 'Alexander' print(first_name[8]) # => r print(first_name[9]) IndexError: string index out of range
Чтобы лучше закрепить новые знания, посмотрите на код ниже и подумайте, что он выдаст:
magic = '\nyou' print(magic[1]) # => ?
Бывают и нестандартные ситуации. Например, нужно вывести элемент из конца, причем из выражения с большим количеством символов. В этом случае можно воспользоваться отрицательным индексом, который облегчит работу программиста.
Допустимо использовать отрицательные индексы. В этом случае идет обращение к символам, начиная с конца строки. -1 — индекс последнего символа, -2 — предпоследнего и так далее. В отличие от прямой индексации, обратный отсчет идет от -1 :
first_name = 'Alexander' print(first_name[-1]) # => r
Индексом может быть не только конкретное число, но и значение переменной. Посмотрите на пример ниже. Здесь мы записали индекс внутри квадратных скобок не числом, а переменной. Такой код приведет к тому же результату — выводу на экран символа A:
first_name = 'Alexander' index = 0 print(first_name[index]) # => A
Чтобы выводить из выражения лишь некоторые символы, не нужно писать большое количество строк кода — достаточно извлечь элемент с помощью индекса. Также можно пользоваться отрицательным индексом, чтобы легче выводить символы с конца выражения. Далее разберемся, как с помощью этих знаний можно извлекать подстроки из строки.
Задание
Выведите на экран последний символ строки, находящейся в переменной name
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Определения
- Индекс — позиция символа внутри строки.
Как найти букву в строке
Рассмотрим основные методы строк, которые мы можем применить в приложениях:
- isalpha() : возвращает True, если строка состоит только из алфавитных символов
- islower() : возвращает True, если строка состоит только из символов в нижнем регистре
- isupper() : возвращает True, если все символы строки в верхнем регистре
- isdigit() : возвращает True, если все символы строки — цифры
- isnumeric() : возвращает True, если строка представляет собой число
- startswith(str) : возвращает True, если строка начинается с подстроки str
- endswith(str) : возвращает True, если строка заканчивается на подстроку str
- lower() : переводит строку в нижний регистр
- upper() : переводит строку в вехний регистр
- title() : начальные символы всех слов в строке переводятся в верхний регистр
- capitalize() : переводит в верхний регистр первую букву только самого первого слова строки
- lstrip() : удаляет начальные пробелы из строки
- rstrip() : удаляет конечные пробелы из строки
- strip() : удаляет начальные и конечные пробелы из строки
- ljust(width) : если длина строки меньше параметра width, то справа от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по левому краю
- rjust(width) : если длина строки меньше параметра width, то слева от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по правому краю
- center(width) : если длина строки меньше параметра width, то слева и справа от строки равномерно добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по центру
- find(str[, start [, end]) : возвращает индекс подстроки в строке. Если подстрока не найдена, возвращается число -1
- replace(old, new[, num]) : заменяет в строке одну подстроку на другую
- split([delimeter[, num]]) : разбивает строку на подстроки в зависимости от разделителя
- partition(delimeter) : разбивает строку по разделителю на три подстроки и возвращает кортеж из трех элементов — подстрока до разделителя, разделитель и подстрока после разделителя
- join(strs) : объединяет строки в одну строку, вставляя между ними определенный разделитель
Например, если мы ожидаем ввод с клавиатуры числа, то перед преобразованием введенной строки в число можно проверить, с помощью метода isnumeric() введено ли в действительности число, и если так, то выполнить операцию преобразования:
string = input("Введите число: ") if string.isnumeric(): number = int(string) print(number)
Проверка, начинается или оканчивается строка на определенную подстроку:
file_name = "hello.py" starts_with_hello = file_name.startswith("hello") # True ends_with_exe = file_name.endswith("exe") # False
Удаление пробелов в начале и в конце строки:
string = " hello world! " string = string.strip() print(string) # hello world!
Дополнение строки пробелами и выравнивание:
print("iPhone 7:", "52000".rjust(10)) print("Huawei P10:", "36000".rjust(10))
iPhone 7: 52000 Huawei P10: 36000
Поиск в строке
Для поиска подстроки в строке в Python применяется метод find() , который возвращает индекс первого вхождения подстроки в строку и имеет три формы:
- find(str) : поиск подстроки str ведется с начала строки до ее конца
- find(str, start) : параметр start задает начальный индекс, с которого будет производиться поиск
- find(str, start, end) : параметр end задает конечный индекс, до которого будет идти поиск
Если подстрока не найдена, метод возвращает -1:
welcome = "Hello world! Goodbye world!" index = welcome.find("wor") print(index) # 6 # поиск с 10-го индекса index = welcome.find("wor",10) print(index) # 21 # поиск с 10 по 15 индекс index = welcome.find("wor",10,15) print(index) # -1
Замена в строке
Для замены в строке одной подстроки на другую применяется метод replace() :
- replace(old, new) : заменяет подстроку old на new
- replace(old, new, num) : параметр num указывает, сколько вхождений подстроки old надо заменить на new. По умолчанию num равно -1, что соответствует первой версии метода и приводит к замене всех вхождений.
phone = "+1-234-567-89-10" # замена дефисов на пробел edited_phone = phone.replace("-", " ") print(edited_phone) # +1 234 567 89 10 # удаление дефисов edited_phone = phone.replace("-", "") print(edited_phone) # +12345678910 # замена только первого дефиса edited_phone = phone.replace("-", "", 1) print(edited_phone) # +1234-567-89-10
Разделение на подстроки
Метод split() разбивает строку на список подстрок в зависимости от разделителя. В качестве разделителя может выступать любой символ или последовательность символов. Данный метод имеет следующие формы:
- split() : в качестве разделителя используется пробел
- split(delimeter) : в качестве разделителя используется delimeter
- split(delimeter, num) : параметр num указывает, сколько вхождений delimeter используется для разделения. Оставшаяся часть строки добавляется в список без разделения на подстроки
text = "Это был огромный, в два обхвата дуб, с обломанными ветвями и с обломанной корой" # разделение по пробелам splitted_text = text.split() print(splitted_text) print(splitted_text[6]) # дуб, # разбиение по запятым splitted_text = text.split(",") print(splitted_text) print(splitted_text[1]) # в два обхвата дуб # разбиение по первым пяти пробелам splitted_text = text.split(" ", 5) print(splitted_text) print(splitted_text[5]) # обхвата дуб, с обломанными ветвями и с обломанной корой
Еще один метод — partition() разбивает строку по разделителю на три подстроки и возвращает кортеж из трех элементов — подстрока до разделителя, разделитель и подстрока после разделителя:
text = "Это был огромный, в два обхвата дуб, с обломанными ветвями и с обломанной корой" text_parts = text.partition("дуб") print(text_parts) # ('Это был огромный, в два обхвата ', 'дуб', ', с обломанными ветвями и с обломанной корой')
Если разделитель с строке не найден, то возвращается кортеж с одной строкой.
Соединение строк
При рассмотрении простейших операций со строками было показано, как объединять строки с помощью операции сложения. Другую возможность для соединения строк представляет метод join() : он объединяет список строк. Причем текущая строка, у которой вызывается данный метод, используется в качестве разделителя:
words = ["Let", "me", "speak", "from", "my", "heart", "in", "English"] # разделитель - пробел sentence = " ".join(words) print(sentence) # Let me speak from my heart in English # разделитель - вертикальная черта sentence = " | ".join(words) print(sentence) # Let | me | speak | from | my | heart | in | English
Вместо списка в метод join можно передать простую строку, тогда разделитель будет вставляться между символами этой строки:
word = "hello" joined_word = "|".join(word) print(joined_word) # h|e|l|l|o
Найти символы в строке Python
Для поиска символов в начале строки применяется метод startswith , который возвращает булевые значения True или False . В первом параметре метода задаем нужный нам символ, во втором и третьем необязательных параметрах — индекс начала и конца поиска соответственно. Смотрите пример:
txt = ‘abсadea’ res = txt.startswith(‘a’, 3, 6) print(res)
Результат выполнения кода:
С помощью метода endswith
Чтобы найти вхождение символа в конце строки используют метод endswith , который возвращает булевые значения True или False . В первом параметре метода задаем символ, во втором и третьем необязательных параметрах — индекс начала и конца поиска соответственно. Смотрите пример:
txt = ‘abсadea’ res = txt.endswith(‘a’, 0, 4) print(res)
Результат выполнения кода:
Смотрите также
- метод startswith ,
который проверяет подстроку с начала строки - метод endswith ,
который проверяет вхождение подстроки с конца строки