Как найти последнее вхождение символа в строке

(PHP 4, PHP 5, PHP 7, PHP 8)

strrchrНаходит последнее вхождение символа в строке

Описание

strrchr(string $haystack, string $needle): string|false

Список параметров

haystack

Строка, в которой производится поиск

needle

Если needle состоит более чем из
одного символа, используется только первый символ. Это поведение
отличается от strstr().

До PHP 8.0.0, если параметр needle не является строкой,
он преобразуется в целое число и трактуется как код символа.
Это поведение устарело с PHP 7.3.0, и полагаться на него крайне не рекомендуется.
В зависимости от предполагаемого поведения,
параметр needle должен быть либо явно приведён к строке,
либо должен быть выполнен явный вызов chr().

Возвращаемые значения

Функция возвращает фрагмент строки, или false, если подстрока
needle не найдена.

Список изменений

Версия Описание
8.0.0 Передача целого числа (int) в needle больше не поддерживается.
7.3.0 Передача целого числа (int) в needle объявлена устаревшей.

Примеры

Пример #1 Пример использования strrchr()


<?php
// получить последнюю директорию из $PATH
$dir = substr(strrchr($PATH, ":"), 1);// получить все после последнего перевода строки
$text = "Line 1nLine 2nLine 3";
$last = substr(strrchr($text, 10), 1 );
?>

Примечания

Замечание: Эта функция безопасна для обработки данных в двоичной форме.

Смотрите также

  • strstr() – Находит первое вхождение подстроки
  • strrpos() – Возвращает позицию последнего вхождения подстроки в строке

matthewkastor at live dot com

12 years ago


<?php

/**

* Removes the preceeding or proceeding portion of a string

* relative to the last occurrence of the specified character.

* The character selected may be retained or discarded.

*

* Example usage:

* <code>

* $example = 'http://example.com/path/file.php';

* $cwd_relative[] = cut_string_using_last('/', $example, 'left', true);

* $cwd_relative[] = cut_string_using_last('/', $example, 'left', false);

* $cwd_relative[] = cut_string_using_last('/', $example, 'right', true);

* $cwd_relative[] = cut_string_using_last('/', $example, 'right', false);

* foreach($cwd_relative as $string) {

*     echo "$string <br>".PHP_EOL;

* }

* </code>

*

* Outputs:

* <code>

* http://example.com/path/

* http://example.com/path

* /file.php

* file.php

* </code>

*

* @param string $character the character to search for.

* @param string $string the string to search through.

* @param string $side determines whether text to the left or the right of the character is returned.

* Options are: left, or right.

* @param bool $keep_character determines whether or not to keep the character.

* Options are: true, or false.

* @return string

*/

function cut_string_using_last($character, $string, $side, $keep_character=true) {

   
$offset = ($keep_character ? 1 : 0);

   
$whole_length = strlen($string);

   
$right_length = (strlen(strrchr($string, $character)) - 1);

   
$left_length = ($whole_length - $right_length - 1);

    switch(
$side) {

        case
'left':

           
$piece = substr($string, 0, ($left_length + $offset));

            break;

        case
'right':

           
$start = (0 - ($right_length + $offset));

           
$piece = substr($string, $start);

            break;

        default:

           
$piece = false;

            break;

    }

    return(
$piece);

}

?>

sekati at gmail dot com

17 years ago


just a small addition to carlos dot lage at gmail dot com note which makes it a bit more useful and flexible:

<?php
// return everything up to last instance of needle
// use $trail to include needle chars including and past last needle
function reverse_strrchr($haystack, $needle, $trail) {
    return
strrpos($haystack, $needle) ? substr($haystack, 0, strrpos($haystack, $needle) + $trail) : false;
}
// usage:
$ns = (reverse_strrchr($_SERVER["SCRIPT_URI"], "/", 0));
$ns2 = (reverse_strrchr($_SERVER["SCRIPT_URI"], "/", 1));
echo(
$ns . "<br>" . $ns2);
?>


dchris1 at bigpond dot net dot au

19 years ago


The function provided by marcokonopacki at hotmail dot com isn't really a reverse-version of strrchr(), rather a reverse version of strchr(). It returns everything from the start of $haystack up to the FIRST instance of the $needle. This is basically a reverse of the behavior which you expect from strchr(). A reverse version of strrchr() would return everything in $haystack up to the LAST instance of $needle, eg:

<?php
// reverse strrchr() - PHP v4.0b3 and above
function reverse_strrchr($haystack, $needle)
{
   
$pos = strrpos($haystack, $needle);
    if(
$pos === false) {
        return
$haystack;
    }
    return
substr($haystack, 0, $pos + 1);
}
?>

Note that this function will need to be modified slightly to work with pre 4.0b3 versions of PHP due to the return type of strrpos() ('0' is not necessarily 'false'). Check the documentation on strrpos() for more info.

A function like this can be useful for extracting the path to a script, for example:

<?
$string = "/path/to/the/file/filename.php";

echo reverse_strrchr($string, '/'); // will echo "/path/to/the/file/"
?>


readless at gmx dot net

16 years ago


to: repley at freemail dot it

the code works very well, but as i was trying to cut script names (e.g.: $_SERVER["SCRIPT_NAME"] => /index.php, cut the string at "/" and return "index.php") it returned nothing (false). i've modified your code and now it works also if the needle is the first char.
- regards from germany

<?php
//strxchr(string haystack, string needle [, bool int leftinclusive [, bool int rightinclusive ]])
function strxchr($haystack, $needle, $l_inclusive = 0, $r_inclusive = 0){
   if(
strrpos($haystack, $needle)){
      
//Everything before last $needle in $haystack.
      
$left substr($haystack, 0, strrpos($haystack, $needle) + $l_inclusive);//Switch value of $r_inclusive from 0 to 1 and viceversa.
      
$r_inclusive = ($r_inclusive == 0) ? 1 : 0;//Everything after last $needle in $haystack.
      
$right substr(strrchr($haystack, $needle), $r_inclusive);//Return $left and $right into an array.
      
return array($left, $right);
   } else {
       if(
strrchr($haystack, $needle)) return array('', substr(strrchr($haystack, $needle), $r_inclusive));
       else return
false;
   }
}
?>


Primo Anderson Do S?tio

17 years ago


$filename = 'strrchr_test.php';
print strrchr( $filename, '.' );

Result:
.php

$other_filename = 'strrchr_test.asp.php';
print  strrchr( $other_filename, '.' );

Result:
.php


freakinunreal at hotmail dot com

17 years ago


to marcokonopacki at hotmail dot com.

I had to make a slight change in your function for it to return the complete needle inclusive.

// Reverse search of strrchr.
function strrrchr($haystack,$needle)
{

   // Returns everything before $needle (inclusive).
   //return substr($haystack,0,strpos($haystack,$needle)+1);
   // becomes
   return substr($haystack,0,strpos($haystack,$needle)+strlen($needle));
}

Note: the +1 becomes +strlen($needle)

Otherwise it only returns the first character in needle backwards.


marcokonopacki at hotmail dot com

20 years ago


<?

// Reverse search of strrchr.
function strrrchr($haystack,$needle)
{

    // Returns everything before $needle (inclusive).
    return substr($haystack,0,strpos($haystack,$needle)+1);

    }

$string = "FIELD NUMBER(9) NOT NULL";

echo strrrchr($string,")"); // Will print FIELD (9)

?>


carlos dot lage at gmail dot com

18 years ago


I used dchris1 at bigpond dot net dot au 's reverse strrchr and reduced it to one line of code and fixed it's functionality - the real strrchr() returns FALSE if the needle is not found, not the haystack :)

<?php
// reverse strrchr()
function reverse_strrchr($haystack, $needle)
{
                return
strrpos($haystack, $needle) ? substr($haystack, 0, strrpos($haystack, $needle) +1 ) : false;
}
?>


andfarm at thibs dot menloschool dot org

19 years ago


strrchr is also very useful for finding the extension of a file. For example:

$ext = strrchr($filename, ".");

and $ext will contain the extension of the file, including a ".", if the file has an extension, and FALSE if the file has no extension. If the file has multiple extensions, such as "evilfile.jpg.vbs", then this construction will just return the last extension.


alex_bb23 at yahoo.co.uk

5 years ago


I think that a good way (I don't know if is the best one) to extract a portion from a string:
<?php

$image

= "image.name.jpg";
// get file extension
preg_replace("/.*.(.*)$/", "$1", $last);
// will result: jpg?>

Is faster that substr(strrchr...

I want to find the position (or index) of the last occurrence of a certain substring in given input string str.

For example, suppose the input string is str = 'hello' and the substring is target = 'l', then it should output 3.

How can I do this?

David B's user avatar

asked Mar 5, 2012 at 19:13

Parth Soni's user avatar

Use .rfind():

>>> s = 'hello'
>>> s.rfind('l')
3

Also don’t use str as variable name or you’ll shadow the built-in str().

answered Mar 5, 2012 at 19:15

Rik Poggi's user avatar

Rik PoggiRik Poggi

28k6 gold badges64 silver badges82 bronze badges

0

You can use rfind() or rindex()
Python2 links: rfind() rindex()

>>> s = 'Hello StackOverflow Hi everybody'

>>> print( s.rfind('H') )
20

>>> print( s.rindex('H') )
20

>>> print( s.rfind('other') )
-1

>>> print( s.rindex('other') )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found

The difference is when the substring is not found, rfind() returns -1 while rindex() raises an exception ValueError (Python2 link: ValueError).

If you do not want to check the rfind() return code -1, you may prefer rindex() that will provide an understandable error message. Else you may search for minutes where the unexpected value -1 is coming from within your code…


Example: Search of last newline character

>>> txt = '''first line
... second line
... third line'''

>>> txt.rfind('n')
22

>>> txt.rindex('n')
22

answered Nov 14, 2014 at 10:51

oHo's user avatar

oHooHo

50.5k27 gold badges163 silver badges198 bronze badges

1

Use the str.rindex method.

>>> 'hello'.rindex('l')
3
>>> 'hello'.index('l')
2

answered Mar 5, 2012 at 19:15

rmmh's user avatar

rmmhrmmh

6,98125 silver badges37 bronze badges

1

Not trying to resurrect an inactive post, but since this hasn’t been posted yet…

(This is how I did it before finding this question)

s = "hello"
target = "l"
last_pos = len(s) - 1 - s[::-1].index(target)

Explanation: When you’re searching for the last occurrence, really you’re searching for the first occurrence in the reversed string. Knowing this, I did s[::-1] (which returns a reversed string), and then indexed the target from there. Then I did len(s) - 1 - the index found because we want the index in the unreversed (i.e. original) string.

Watch out, though! If target is more than one character, you probably won’t find it in the reversed string. To fix this, use last_pos = len(s) - 1 - s[::-1].index(target[::-1]), which searches for a reversed version of target.

answered Apr 7, 2018 at 14:17

Adi219's user avatar

Adi219Adi219

4,6362 gold badges20 silver badges43 bronze badges

2

Try this:

s = 'hello plombier pantin'
print (s.find('p'))
6
print (s.index('p'))
6
print (s.rindex('p'))
15
print (s.rfind('p'))

Chei's user avatar

Chei

2,1073 gold badges20 silver badges33 bronze badges

answered Oct 13, 2014 at 14:10

Gad's user avatar

GadGad

691 silver badge2 bronze badges

For this case both rfind() and rindex() string methods can be used, both will return the highest index in the string where the substring is found like below.

test_string = 'hello'
target = 'l'
print(test_string.rfind(target))
print(test_string.rindex(target))

But one thing should keep in mind while using rindex() method, rindex() method raises a ValueError [substring not found] if the target value is not found within the searched string, on the other hand rfind() will just return -1.

answered Nov 14, 2021 at 9:30

Rubel's user avatar

RubelRubel

1,20613 silver badges18 bronze badges

The more_itertools library offers tools for finding indices of all characters or all substrings.

Given

import more_itertools as mit


s = "hello"
pred = lambda x: x == "l"

Code

Characters

Now there is the rlocate tool available:

next(mit.rlocate(s, pred))
# 3

A complementary tool is locate:

list(mit.locate(s, pred))[-1]
# 3

mit.last(mit.locate(s, pred))
# 3

Substrings

There is also a window_size parameter available for locating the leading item of several items:

s = "How much wood would a woodchuck chuck if a woodchuck could chuck wood?"
substring = "chuck"
pred = lambda *args: args == tuple(substring)

next(mit.rlocate(s, pred=pred, window_size=len(substring)))
# 59

answered Feb 9, 2018 at 2:23

pylang's user avatar

pylangpylang

39.7k11 gold badges127 silver badges119 bronze badges

Python String rindex() Method

Description
Python string method rindex() returns the last index where the substring str is found, or raises an exception if no such index exists, optionally restricting the search to string[beg:end].

Syntax
Following is the syntax for rindex() method −

str.rindex(str, beg=0 end=len(string))

Parameters
str − This specifies the string to be searched.

beg − This is the starting index, by default its 0

len − This is ending index, by default its equal to the length of the string.

Return Value
This method returns last index if found otherwise raises an exception if str is not found.

Example
The following example shows the usage of rindex() method.

Live Demo

!/usr/bin/python

str1 = "this is string example....wow!!!";
str2 = "is";

print str1.rindex(str2)
print str1.index(str2)

When we run above program, it produces following result −

5
2

Ref: Python String rindex() Method
– Tutorialspoint

answered Jun 15, 2020 at 10:12

Wise4Christ's user avatar

If you don’t wanna use rfind then this will do the trick/

def find_last(s, t):
    last_pos = -1
    while True:
        pos = s.find(t, last_pos + 1)
        if pos == -1:
            return last_pos
        else:
            last_pos = pos

answered Feb 23, 2018 at 17:15

Salam's user avatar

SalamSalam

1,03114 silver badges19 bronze badges

# Last Occurrence of a Character in a String without using inbuilt functions
str = input("Enter a string : ")
char = input("Enter a character to serach in string : ")
flag = 0
count = 0
for i in range(len(str)):
    if str[i] == char:
        flag = i
if flag == 0:
    print("Entered character ",char," is not present in string")
else:
    print("Character ",char," last occurred at index : ",flag)

answered Jun 5, 2021 at 21:29

Chand's user avatar

ChandChand

111 bronze badge

you can use rindex() function to get the last occurrence of a character in string

s="hellloooloo"
b='l'
print(s.rindex(b))

taras's user avatar

taras

6,47810 gold badges39 silver badges50 bronze badges

answered Oct 7, 2019 at 10:36

praveen kumar's user avatar

str = "Hello, World"
target='l'
print(str.rfind(target) +1)

or

str = "Hello, World"
flag =0
target='l'
for i,j in enumerate(str[::-1]):
    if target == j:
       flag = 1
       break;
if flag == 1:   
    print(len(str)-i)

answered Jan 12, 2022 at 7:26

BitchBark's user avatar

Часто нам нужно найти символ в строке python. Для решения этой задачи разработчики используют метод find(). Он помогает найти индекс первого совпадения подстроки в строке. Если символ или подстрока не найдены, find возвращает -1.

Синтаксис

string.find(substring,start,end)

Метод find принимает три параметра:

  • substring (символ/подстрока) — подстрока, которую нужно найти в данной строке.
  • start (необязательный) — первый индекс, с которого нужно начинать поиск. По умолчанию значение равно 0.
  • end (необязательный) — индекс, на котором нужно закончить поиск. По умолчанию равно длине строки.

Параметры, которые передаются в метод, — это подстрока, которую требуются найти, индекс начала и конца поиска. Значение по умолчанию для начала поиска — 0, а для конца — длина строки.

В этом примере используем метод со значениями по умолчанию.

Метод find() будет искать символ и вернет положение первого совпадения. Даже если символ встречается несколько раз, то метод вернет только положение первого совпадения.


>>> string = "Добро пожаловать!"
>>> print("Индекс первой буквы 'о':", string.find("о"))
Индекс первой буквы 'о': 1

Поиск не с начала строки с аргументом start

Можно искать подстроку, указав также начальное положение поиска.

В этом примере обозначим стартовое положение значением 8 и метод начнет искать с символа с индексом 8. Последним положением будет длина строки — таким образом метод выполнит поиска с индекса 8 до окончания строки.


>>> string = "Специалисты назвали плюсы и минусы Python"
>>> print("Индекс подстроки 'али' без учета первых 8 символов:", string.find("али", 8))
Индекс подстроки 'али' без учета первых 8 символов: 16

Поиск символа в подстроке со start и end

С помощью обоих аргументов (start и end) можно ограничить поиск и не проводить его по всей строке. Найдем индексы слова «пожаловать» и повторим поиск по букве «о».


>>> string = "Добро пожаловать!"
>>> start = string.find("п")
>>> end = string.find("ь") + 1
>>> print("Индекс первой буквы 'о' в подстроке:", string.find("о", start, end))
Индекс первой буквы 'о' в подстроке: 7

Проверка есть ли символ в строке

Мы знаем, что метод find() позволяет найти индекс первого совпадения подстроки. Он возвращает -1 в том случае, если подстрока не была найдена.


>>> string = "Добро пожаловать!"
>>> print("Есть буква 'г'?", string.find("г") != -1)
Есть буква 'г'? False
>>> print("Есть буква 'т'?", string.find("т") != -1)
Есть буква 'т'? True

Поиск последнего вхождения символа в строку

Функция rfind() напоминает find(), а единое отличие в том, что она возвращает максимальный индекс. В обоих случаях же вернется -1, если подстрока не была найдена.

В следующем примере есть строка «Добро пожаловать!». Попробуем найти в ней символ «о» с помощью методов find() и rfind().


>>> string = "Добро пожаловать"
>>> print("Поиск 'о' методом find:", string.find("о"))
Поиск 'о' методом find: 1
>>> print("Поиск 'о' методом rfind:", string.rfind("о"))
Поиск 'о' методом rfind: 11

Вывод показывает, что find() возвращает индекс первого совпадения подстроки, а rfind() — последнего совпадения.

Второй способ поиска — index()

Метод index() помогает найти положение данной подстроки по аналогии с find(). Единственное отличие в том, что index() бросит исключение в том случае, если подстрока не будет найдена, а find() просто вернет -1.

Вот рабочий пример, показывающий разницу в поведении index() и find():


>>> string = "Добро пожаловать"
>>> print("Поиск 'о' методом find:", string.find("о"))
Поиск 'о' методом find: 1
>>> print("Поиск 'о' методом index:", string.index("о"))
Поиск 'о' методом index: 1

В обоих случаях возвращается одна и та же позиция. А теперь попробуем с подстрокой, которой нет в строке:


>>> string = "Добро пожаловать"
>>> print("Поиск 'г' методом find:", string.find("г"))
Поиск 'г' методом find: 1
>>> print("Поиск 'г' методом index:", string.index("г"))
Traceback (most recent call last):
File "pyshell#21", line 1, in module
print("Поиск 'г' методом index:", string.index("г"))
ValueError: substring not found

В этом примере мы пытались найти подстроку «г». Ее там нет, поэтому find() возвращает -1, а index() бросает исключение.

Поиск всех вхождений символа в строку

Чтобы найти общее количество совпадений подстроки в строке можно использовать ту же функцию find(). Пройдемся циклом while по строке и будем задействовать параметр start из метода find().

Изначально переменная start будет равна -1, что бы прибавлять 1 у каждому новому поиску и начать с 0. Внутри цикла проверяем, присутствует ли подстрока в строке с помощью метода find.

Если вернувшееся значение не равно -1, то обновляем значением count.

Вот рабочий пример:


my_string = "Добро пожаловать"
start = -1
count = 0

while True:
start = my_string.find("о", start+1)
if start == -1:
break
count += 1

print("Количество вхождений символа в строку: ", count )

Количество вхождений символа в строку:  4

Выводы

  • Метод find() помогает найти индекс первого совпадения подстроки в данной строке. Возвращает -1, если подстрока не была найдена.
  • В метод передаются три параметра: подстрока, которую нужно найти, start со значением по умолчанию равным 0 и end со значением по умолчанию равным длине строки.
  • Можно искать подстроку в данной строке, задав начальное положение, с которого следует начинать поиск.
  • С помощью параметров start и end можно ограничить зону поиска, чтобы не выполнять его по всей строке.
  • Функция rfind() повторяет возможности find(), но возвращает максимальный индекс (то есть, место последнего совпадения). В обоих случаях возвращается -1, если подстрока не была найдена.
  • index() — еще одна функция, которая возвращает положение подстроки. Отличие лишь в том, что index() бросает исключение, если подстрока не была найдена, а find() возвращает -1.
  • find() можно использовать в том числе и для поиска общего числа совпадений подстроки.

Метод lastIndexOf() с одним аргументом: подстрокой для поиска, ищет всю вызывающую строку и возвращает индекс последнего вхождения указанной подстроки. Учитывая второй аргумент: число, метод возвращает последнее вхождение указанной подстроки с индексом, меньшим или равным указанному числу.

Try it

Syntax

lastIndexOf(searchString)
lastIndexOf(searchString, position)

Parameters

searchString

Подстрока для поиска, приведенная к строке .

Если метод вызывается без аргументов, searchString приводится к "undefined" . Следовательно, "undefined".lastIndexOf() возвращает 0 , потому что подстрока "undefined" находится в позиции 0 в строке "undefined" . Но "undefine".lastIndexOf() возвращает -1 — потому что подстрока "undefined" не найдена в строке "undefine" .

positionOptional

Метод возвращает индекс последнего вхождения указанной подстроки в позиции, меньшей или равной position , которая по умолчанию равна +Infinity . Если position больше длины вызывающей строки, метод ищет всю строку. Если position меньше 0 , поведение такое же, как и для 0 — то есть метод ищет указанную подстроку только по индексу 0 .

  • 'hello world hello'.lastIndexOf('world', 4) возвращает -1 , потому что, хотя подстрока world находится в индексе 6 , эта позиция не меньше или равна 4 .
  • 'hello world hello'.lastIndexOf('hello', 99) возвращает 12 , потому что последнее вхождение hello в позиции, меньшей или равной 99 , находится в позиции 12 .
  • 'hello world hello'.lastIndexOf('hello', 0) и 'hello world hello'.lastIndexOf('hello', -5) возвращают 0 , потому что оба заставляют метод искать hello только по индексу 0 .

Return value

Индекс последнего найденного вхождения searchString или -1 , если не найдено.

Description

Строки имеют нулевой индекс: индекс первого символа строки равен 0 , а индекс последнего символа строки равен длине строки минус 1.

'canal'.lastIndexOf('a');     
'canal'.lastIndexOf('a', 2);  
'canal'.lastIndexOf('a', 0);  
'canal'.lastIndexOf('x');     
'canal'.lastIndexOf('c', -5); 
'canal'.lastIndexOf('c', 0);  
'canal'.lastIndexOf('');      
'canal'.lastIndexOf('', 2);   

Case-sensitivity

Метод lastIndexOf() чувствителен к регистру. Например, следующее выражение возвращает -1 :

'Blue Whale, Killer Whale'.lastIndexOf('blue'); 

Examples

Использование indexOf()и lastIndexOf()

В следующем примере indexOf() и lastIndexOf() используются для поиска значений в строке « Brave, Brave New World ».

const anyString = 'Brave, Brave New World';

console.log(`The index of the first "Brave" is ${anyString.indexOf('Brave')}`);

console.log(`The index of the last "Brave" is ${anyString.lastIndexOf('Brave')}`);

Specifications

Browser compatibility

Desktop Mobile Server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet Deno Node.js
lastIndexOf

1

12

1

6

3

1

4.4

18

4

10.1

1

1.0

1.0

0.10.0

See also

  • String.prototype.charAt()
  • String.prototype.indexOf()
  • String.prototype.split()
  • Array.prototype.indexOf()
  • Array.prototype.lastIndexOf()


JavaScript

  • String.prototype.indexOf()

    Метод indexOf(),учитывая один аргумент:подстроку для поиска,перебирает весь вызов и возвращает первое указанное вхождение Если метод вызывается

  • String.prototype.italics()

    Исправлено:Эта функция больше не рекомендуется.

  • String length

    Свойство length объекта String содержит единицы кода UTF-16.

  • String.prototype.link()

    Исправлено:Эта функция больше не рекомендуется.

В этом посте мы обсудим, как найти индекс последнего вхождения символа в строку в Python.

1. Использование rfind() функция

Простое решение для поиска последнего индекса символа в строке — использование rfind() функция, которая возвращает индекс последнего вхождения в строку, где найден символ, и возвращает -1 в противном случае.

if __name__ == ‘__main__’:

    s = “Hello, World”

    c = ‘o’

    index = s.rfind(c)

    if index != 1:

        print(f“Char ‘{c}’ is found at index {index}”)    # Char ‘o’ находится в индексе 8

    else:

        print(“Char not found”)

Скачать  Выполнить код

2. Использование rindex() функция

В качестве альтернативы вы можете использовать rindex() функция, которая отличается от rfind() функционировать как rfind() возвращается -1 пока rindex() вызывает исключение ValueError когда персонаж не найден.

if __name__ == ‘__main__’:

    s = “Hello, World”

    c = ‘o’

    try:

        index = s.rindex(c)

        print(f“Char ‘{c}’ is found at index {index}”)  # Char ‘o’ находится в индексе 8

    except:

        print(“Char not found”)

Скачать  Выполнить код

Наконец, вы можете использовать more_itertools.rlocate() Функция для поиска определенных символов в строке. Он дает индекс каждого символа в строке, для которого выполняется указанный предикат.

import more_itertools

if __name__ == ‘__main__’:

    s = “Hello, World”

    c = ‘o’

    index = next(more_itertools.rlocate(s, lambda x: x == c))

    if index != 1:

        print(f“Char ‘{c}’ is found at index {index}”)    # Char ‘o’ находится в индексе 8

    else:

        print(“Char not found”)

Скачать код

Вот и все, что касается поиска индекса последнего вхождения символа в строку в Python.

Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂

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