Как найти значение последнего элемента строки

I was wondering if there’s an abbreviation or a more elegant way of getting the last character of a string like in:

char lastChar = myString.at( myString.length() - 1 );

Something like myString.back() doesn’t seem to exist. Is there an equivalent?

asked Feb 3, 2011 at 9:50

Deve's user avatar

2

In C++11 and beyond, you can use the back member function:

char ch = myStr.back();

In C++03, std::string::back is not available due to an oversight, but you can get around this by dereferencing the reverse_iterator you get back from rbegin:

char ch = *myStr.rbegin();

In both cases, be careful to make sure the string actually has at least one character in it! Otherwise, you’ll get undefined behavior, which is a Bad Thing.

user's user avatar

user

14.4k6 gold badges25 silver badges123 bronze badges

answered Feb 3, 2011 at 9:53

templatetypedef's user avatar

templatetypedeftemplatetypedef

360k101 gold badges890 silver badges1059 bronze badges

4

You probably want to check the length of the string first and do something like this:

if (!myStr.empty())
{
    char lastChar = *myStr.rbegin();
}

answered Feb 3, 2011 at 9:59

Kerri Brown's user avatar

Kerri BrownKerri Brown

1,1571 gold badge8 silver badges18 bronze badges

2

You could write a function template back that delegates to the member function for ordinary containers and a normal function that implements the missing functionality for strings:

template <typename C>
typename C::reference back(C& container)
{
    return container.back();
}

template <typename C>
typename C::const_reference back(const C& container)
{
    return container.back();
}

char& back(std::string& str)
{
    return *(str.end() - 1);
}

char back(const std::string& str)
{
    return *(str.end() - 1);
}

Then you can just say back(foo) without worrying whether foo is a string or a vector.

answered Feb 3, 2011 at 11:26

fredoverflow's user avatar

fredoverflowfredoverflow

255k93 gold badges384 silver badges656 bronze badges

*(myString.end() - 1) maybe? That’s not exactly elegant either.

A python-esque myString.at(-1) would be asking too much of an already-bloated class.

answered Feb 3, 2011 at 9:55

tenpn's user avatar

tenpntenpn

4,5163 gold badges43 silver badges63 bronze badges

1

Python предлагает много способов получить последний символ строки. Но чтобы в них разобраться, сперва нужно понять, как работает индексирование в Python. Чтобы указать, какой фрагмент строки вы хотите получить, можно использовать квадратные скобки, а в них поместить индекс нужного символа.

Например, в строке “stand firm in the faith” всего 23 символа.

testString = "stand firm in the faith"
print("The length of testString is: %d" % len(testString))

# Вывод:
# The length of testString is: 23

При этом последняя буква “h” имеет индекс 22. Почему 22, а не 23? Потому что в Python индексация начинается с 0. Т.е. первый символ в строке имеет индекс 0, второй – 1 и так далее.

Еще Python имеет замечательную особенность: индексация может идти и в обратном порядке! Просто используйте отрицательные числа, начиная с -1. Под индексом -1 будет последний символ строки, под индексом -2 – предпоследний и т.д.

Схема индексации на примере строки stand firm in the faith

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

Чтобы получить последний символ строки, можно просто обратиться к нему по индексу. Но такое жесткое прописывание индекса связано с определенными проблемами. Для начала вы должны знать сам индекс, а для этого – длину строки. Далее мы опишем несколько лучших методов.

testString = "stand firm in the faith"
lastChar = testString[22]
print("The last character of testString is: %s" % lastChar)

# Вывод:
# The last character of testString is: h

Применение функции len()

Более детерминированный способ получения последнего индекса в строке – это использование функции len() для получения длины строки. В данном случае функция len() вернет 23. Чтобы получить индекс последнего символа, нужно вычесть единицу из длины строки.

testString = "stand firm in the faith"
lastChar = testString[len(testString) - 1]
print("The last character of testString is: %s" % lastChar)

# Вывод:
# The last character of testString is: h

Отрицательный индекс

Вероятно, самый простой способ получить последний символ строки в Python – это использовать отрицательные индексы. Использование отрицательных чисел для индексации в Python позволяет начать отсчет с конца строки. Таким образом, если в строке “stand firm in the faith” вам нужен только последний символ строки, можно обратиться к нему по индексу -1.

testString = "stand firm in the faith"
lastChar = testString[-1]
print("The last character of testString is: %s" % lastChar)

# Вывод:
# The last character of testString is: h

Осторожность при работе с пустой строкой

Все вышеперечисленные методы могут вызвать исключение, если мы не включим в программу проверку ошибок. В следующем примере мы создадим новую строку, в которой не будет ни одного символа. Если мы попытаемся обратиться по индексу к несуществующему символу, Python выбросит исключение.

sampleString = ""
lastChar = sampleString[-1]

Результат:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range

Простой способ исправить этот пример – проверить, что наша строка имеет ненулевую длину (т.е. содержит какие-то символы).

testString = ""
if len(testString) > 0:
    lastChar = testString[len(testString) - 1]
    print("The last character of testString is: %s" % lastChar)
else:
    print("The string was empty")

# Вывод:
# The string was empty

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

Получаем последние n символов строки

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

При помощи среза можно задать диапазон символов. Для этого указываются индексы начала и конца диапазона символов (их разделяет двоеточие). Важно обратить внимание, что символ под начальным индексом войдет в срез, а под конечным – нет. Если при использовании среза вы получаете слишком много или слишком мало символов, то это, скорее всего, связано с непониманием того, как он используется.

testString = "stand firm in the faith"
extractedString = testString[6:10]
print("Extracted string: %s" % extractedString)

# Вывод:
# Extracted string: firm

Примечание редакции: о срезах можно почитать в статье “Срез массива в Python”. Срезы строк работают аналогично.

Как получить последние символы строки с помощью среза

Чтобы получить последние n символов, просто выберите начальный и конечный индекс для среза. Например, если мы хотим получить последнее слово нашей тестовой строки “stand firm in the faith”, мы используем начальный индекс 18. Конечный индекс можно не указывать. В таком случае по умолчанию срез будет до конца строки.

testString = "stand firm in the faith"
lastChars = testString[18:]
print("The last five character of testString is: %s" % lastChars)

# Вывод:
# The last five character of testString is: faith

Можно пойти другим путем и применить функцию len(). Для определения начального индекса среза из длины строки нужно будет вычесть 6. Мы вычитаем единицу, потому что индексация начинается с нуля, и еще 5 – потому что в последнем слове 5 символов.

testString = "stand firm in the faith"
lastChars = testString[len(testString)-6:]
print("The last five character of testString is: %s" % lastChars)

# Вывод:
# The last five character of testString is:  faith

Использование срезов с отрицательной индексацией

Этот вариант немного странный, но это может быть именно то, что вы ищете. Вы можете использовать отрицательную индексацию, чтобы указать начальный индекс, а затем не указывать конечный индекс, чтобы захватить остальную часть строки.

testString = "stand firm in the faith"
lastChars = testString[-5:]
print("The last five character of testString is: %s" % lastChars)

# Вывод:
# The last five character of testString is: faith

Как получить последнее слово в строке

Если вы имеете дело с предложениями и пытаетесь получить последнее слово в строке, лучше всего проделать некоторые манипуляции со строками.

Разделите исходную строку на массив новых строк с помощью функции split(). Первый аргумент функции split() указывает конкретный символ, по которому нужно разделить данную строку. Это может быть любой из символов Юникода, даже специальные символы. В нашем случае мы хотим разделить строку по пробелам. После разделения нам останется только выбрать одну из перечисленных выше техник для захвата последнего слова. Для примера используем отрицательный индекс.

testString = "stand firm in the faith"
words = testString.split(" ")
print("The last word of testString is: %s" % words[-1])

# Вывод:
# The last word of testString is: faith

Примечание редакции: о применении функции split() можно почитать в статье “Разделение строки в Python”.

Осторожно при работе с пустой строкой

Это менее рискованно, чем обращение к последнему элементу строки по индексу, поскольку функция split(), вызванная для пустой строки, вернет массив с содержимым [”], и исключение не будет выброшено. Тем не менее, хорошей практикой является добавление обработки ошибок, чтобы в дальнейшем в программе не возникало неожиданного поведения.

sampleString = ""
testString = ""
words = testString.split(' ')
print(words) 
print("The last word of testString is: %s" % words[-1])

# Вывод:
# ['']
# The last word of testString is: 

Ошибки нет, но это, вероятно, не тот результат, которого ожидает наш код. Исправление аналогично предыдущему примеру проверки ошибок:

testString = ""
if testString.count(" ") > 0:
    words = testString.split(' ')
    print("The last word of testString is: %s" % words[-1])
else:
    print("There was not multiple words in the string")

# Вывод:
# There was not multiple words in the string

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

Удаление пробельных символов из строки

Возможно, вы хотите получить последний символ строки, чтобы узнать, является он печатным или пробельным. Вместо того чтобы выписывать эту оценку, можно использовать один из встроенных строковых методов. В этом примере мы покажем, как использовать метод strip().

testString = "this string has white space on the end  "
print("[%s]" % testString)

# Вывод:
# [this string has white space on the end  ]
testString = "this string has white space on the end  "
testString = testString.strip()
print("[%s]" % testString)

# Вывод:
# [this string has white space on the end]

Как видите, метод strip() удалил пробелы из конца строки. Поэтому, если вы пытались получить последний символ, чтобы проверить, нужно ли удалять пробелы, метод strip() – гораздо более простой способ достижения той же цели.

Перевод статьи «Python: How to get the last character in a string».

How to get the last character of the string:

"linto.yahoo.com."

The last character of this string is "."

How can I find this?

Joe - ElasticsearchBook.com's user avatar

asked Oct 7, 2010 at 18:21

Linto P D's user avatar

1

An elegant and short alternative, is the String.prototype.slice method.

Just by:

str.slice(-1);

A negative start index slices the string from length+index, to length, being index -1, the last character is extracted:

"abc".slice(-1); // "c";

DBS's user avatar

DBS

8,9854 gold badges35 silver badges53 bronze badges

answered Oct 7, 2010 at 18:32

Christian C. Salvadó's user avatar

7

Use charAt:

The charAt() method returns the character at the specified index in a string.

You can use this method in conjunction with the length property of a string to get the last character in that string.
For example:

const myString = "linto.yahoo.com.";
const stringLength = myString.length; // this will be 16
console.log('lastChar: ', myString.charAt(stringLength - 1)); // this will be the string

dota2pro's user avatar

dota2pro

7,0887 gold badges43 silver badges78 bronze badges

answered Oct 7, 2010 at 18:23

Donut's user avatar

DonutDonut

109k20 gold badges133 silver badges146 bronze badges

0

You can achieve this using different ways but with different performance,

1. Using bracket notation:

var str = "Test";
var lastLetter = str[str.length - 1];

But it’s not recommended to use brackets. Check the reasons here

2. charAt[index]:

var lastLetter = str.charAt(str.length - 1)

This is readable and fastest among others. It is most recommended way.

3. substring:

str.substring(str.length - 1);

4. slice:

str.slice(-1);

It’s slightly faster than substring.

You can check the performance here

With ES6:

You can use str.endsWith("t");

But it is not supported in IE. Check more details about endsWith here

answered Jul 6, 2017 at 13:34

Vikas's user avatar

VikasVikas

6,7883 gold badges26 silver badges41 bronze badges

3

str.charAt(str.length - 1)

Some browsers allow (as a non-standard extension) you to shorten this to:

str[str.length - 1];

answered Oct 7, 2010 at 18:22

Matthew Flaschen's user avatar

Matthew FlaschenMatthew Flaschen

277k50 gold badges513 silver badges538 bronze badges

1

Use substr with parameter -1:

«linto.yahoo.com.».substr(-1);

equals «.»

Note:

To extract characters from the end of the string, use a negative start number (This does not work in IE 8 and earlier).

answered Apr 22, 2016 at 16:19

Spikolynn's user avatar

SpikolynnSpikolynn

4,0302 gold badges37 silver badges44 bronze badges

2

Using the String.prototype.at() method is a new way to achieve it

const s = "linto.yahoo.com.";
const last = s.at(-1);

console.log(last);

Read more about at

answered Feb 24, 2022 at 18:16

Ran Turner's user avatar

Ran TurnerRan Turner

14k4 gold badges44 silver badges50 bronze badges

An easy way of doing it is using this :)

var word = "waffle"
word.endsWith("e")

answered Jul 22, 2018 at 18:07

Connie's user avatar

ConnieConnie

3653 silver badges13 bronze badges

4

Try this…

const str = "linto.yahoo.com."
console.log(str.charAt(str.length-1));

adir abargil's user avatar

adir abargil

5,3653 gold badges19 silver badges28 bronze badges

answered Apr 9, 2018 at 23:14

Vishal Kumar's user avatar

Vishal KumarVishal Kumar

1,24013 silver badges15 bronze badges

You can get the last char like this :

var lastChar=yourString.charAt(yourString.length-1);

answered Oct 7, 2010 at 18:23

Colin Hebert's user avatar

Colin HebertColin Hebert

91.2k15 gold badges158 silver badges151 bronze badges

var firstName = "Ada";
var lastLetterOfFirstName = firstName[firstName.length - 1];

answered Nov 22, 2016 at 8:25

Salar's user avatar

SalarSalar

5,2357 gold badges49 silver badges78 bronze badges

1

Use the JavaScript charAt function to get a character at a given 0-indexed position. Use length to find out how long the String is. You want the last character so that’s length — 1.
Example:

var word = "linto.yahoo.com.";
var last = word.charAt(word.length - 1);
alert('The last character is:' + last);

answered Oct 7, 2010 at 18:24

Adam's user avatar

AdamAdam

43.5k16 gold badges103 silver badges144 bronze badges

If you have or are already using lodash, use last instead:

_.last(str);

Not only is it more concise and obvious than the vanilla JS, it also safer since it avoids Uncaught TypeError: Cannot read property X of undefined when the input is null or undefined so you don’t need to check this beforehand:

// Will throw Uncaught TypeError if str is null or undefined
str.slice(-1); 
str.charAt(str.length -1);

// Returns undefined when str is null or undefined
_.last(str);

answered Feb 16, 2021 at 5:42

xlm's user avatar

xlmxlm

6,64414 gold badges52 silver badges55 bronze badges

1

You can use the following. In this case of last character it’s an overkill but for a substring, its useful:

var word = "linto.yahoo.com.";
var last = ".com.";
if (word.substr(-(last.length)) == last)
alert("its a match");

Community's user avatar

answered Jul 11, 2018 at 1:46

Gauravsa's user avatar

GauravsaGauravsa

6,2342 gold badges20 silver badges29 bronze badges

var string = "Hello";
var fg = string.length;
fg = fg - 1;
console.log(string[fg]);

Isaac Weingarten's user avatar

answered Jan 4, 2022 at 9:07

shamant sai's user avatar

2

You can use this simple ES6 method

const lastChar = (str) => str.split('').reverse().join(',').replace(',', '')[str.length === str.length + 1 ? 1 : 0];


// example
console.log(lastChar("linto.yahoo.com."));

This will work in every browsers.

answered Nov 13, 2018 at 13:17

vdegenne's user avatar

vdegennevdegenne

12k14 gold badges79 silver badges104 bronze badges

4

Поиск последней непустой ячейки в строке или столбце функцией ПРОСМОТР

На практике часто возникает необходимость быстро найти значение последней (крайней) непустой ячейки в строке или столбце таблицы. Предположим, для примера, что у нас есть вот такая таблица с данными продаж по нескольким филиалам:

Поиск последней непустой ячейки в строке или столбце Excel

Задача: найти значение продаж в последнем месяце по каждому филиалу, т.е. для Москвы это будет 78, для Питера — 41 и т.д.

Если бы в нашей таблице не было пустых ячеек, то путь к решению был бы очевиден — можно было бы посчитать количество заполненных ячеек в каждой строке и брать потом ячейку с этим номером. Но филиалы работают неравномерно: Москва простаивала в марте и августе, филиал в Тюмени открылся только с апреля и т.д., поэтому такой способ не подойдет.

Универсальным решением будет использование функции ПРОСМОТР (LOOKUP):

Поиск последней непустой ячейки функцией ПРОСМОТР

У этой функции хитрая логика:

  • Она по очереди (слева-направо) перебирает непустые ячейки в диапазоне (B2:M2) и сравнивает каждую из них с искомым значением (9999999).
  • Если значение очередной проверяемой ячейки совпало с искомым, то функция останавливает просмотр и выводит содержимое ячейки.
  • Если точного совпадения нет и очередное значение меньше искомого, то функция переходит к следующей ячейке в строке.

Легко сообразить, что если в качестве искомого значения задать достаточно большое число, то функция пройдет по всей строке и, в итоге, выдаст содержимое последней проверенной ячейки. Для компактности, можно указать искомое число в экспоненциальном формате, например 1E+11 (1*1011 или сто миллиардов).

Если в таблице не числа, а текст, то идея остается той же, но «очень большое число» нужно заменить на «очень большой текст»:

Поиск последнего текстового значения в строке

Применительно к тексту, понятие «большой» означает код символа. В любом шрифте символы идут в следующем порядке возрастания кодов:

  1. латиница прописные (A-Z)
  2. латиница строчные (a-z)
  3. кириллица прописные (А-Я)
  4. кириллица строчные (а-я)

Поэтому строчная «я» оказывается буквой с наибольшим кодом и слово из нескольких подряд «яяяяя» будет, условно, «очень большим словом» — заведомо «большим», чем любое текстовое значение из нашей таблицы.

Вот так. Не совсем очевидное, но красивое и компактное решение. Для поиска последней непустой ячейки в столбцах работает тоже «на ура».

Ссылки по теме

  • Поиск и подстановка по нескольким условиям (ВПР по 2 и более критериям)
  • Поиск ближайшего похожего текста (max совпадений символов)
  • Двумерный поиск в таблице (ВПР 2D)

Получаем последний символ строки в js

Как «получить последний символ строки javascript«. Будем использовать 2 метода, которые «получают последний символ строки в javascript«?

Сколько вариантов существуют по получению последнего символа строки в javascript?

  1. Получаем последний символ строки с помощью slice.
  2. Получаем последний символ строки с помощью substring.
  1. Получаем последний символ строки с помощью slice.

    Для того, чтобы получить последний символ строки нам потребуется:

    Поместим в переменную произвольный текст:

    var str = «Получи последний символ строки»;

    Применим к данной переменной метод «slice»

    str= str.slice(-1);

    Выведем на экран с помощью:

    document.write(str);

    Результат получения последнего символа строки :

    Соберем весь код получения последнего символа строки:

    <script>

    var str = "Получи последний символ строки";

    str= str.slice(-1);

    document.write(str);

    </script>

  2. Получаем последний символ строки с помощью substring.

    Для того, чтобы получить последний символ строки в javascript можно использовать метод «substring».

    Для реализации примера по удалению последнего символа строки нам понадобится:

    Восстановим нажу переменную и вернем её первоначальное значение:

    str = «Получи последний символ строки»;

    Аналогично(с некоторой разницей) применим метод substring.

    str= str.substring( str.length — 1);

    Выведем аналогично:

    document.write(str);

    Соберем весь код получения последнего символа строки в javascript

    <script>

    var str = "Получи последний символ строки";

    str= str.substring(0, str.length - 1);

    document.write(str);

    </script>

    Результат получения последнего символа строки в javascript.

Не благодарите, но ссылкой можете поделиться!

COMMENTS+

 
BBcode


Понравилась статья? Поделить с друзьями:
  • Как найти свой штрих в красках
  • Как составить транскрипцию слова в английском языке
  • Заговор как найти богатство
  • Как найти нужную песню в инстаграме
  • Как найти радиус описанной окружности треугольной пирамиды