На CodeWars была задача - убрать первый и последний символ

из строки. Моё решение внизу, как вам?

16 ответов

14 просмотров

Выглядит слишком по сишному, вместо count можно получить длину строки с помощью функции len, матч не нужен, можно с помощью ифа сделать

Разберись и итераторами и пользуйся ими вместо своих велосипедов

Несколько подсказок: chars это DoubleEndedIterator, есть полезная функция https://doc.rust-lang.org/nightly/std/primitive.char.html#method.len_utf8. Ну и наконец из &str можно получить срез

Алишер Галиев
Несколько подсказок: chars это DoubleEndedIterator...

Со срезом есть нюанс: емнип, индексы при получении среза - это байты, а не чары, поэтому можно получить невалидный utf8-символ. Ну и не стоит забывать про разницу между character и grapheme cluster, и под понятие "символ" больше подходит последнее.

Пашечка
Со срезом есть нюанс: емнип, индексы при получении...

Для этого и нужен https://doc.rust-lang.org/nightly/std/primitive.char.html#method.len_utf8. Чтобы получить валидный срез. Берёшь первый и последний char и используешь что то вроде first_char.len_utf8()..(str.len() - last_char.len_utf8())

Алишер Галиев
Для этого и нужен https://doc.rust-lang.org/nightl...

Печалит только, что получение last_char это O(n), но что поделать :)

Traveller Kolsky
Не

Почему "не"?

Traveller Kolsky
screenshot

Не за компом, я бы проверил что строка не пустая а затем (&s[max(1, s.length - 1)..(s.length - 1)]).to_string()

а какое здесь лучшее решение из тех что на скрине?

|>| <|
а какое здесь лучшее решение из тех что на скрине?

Все плохие. Первые три некорректно будут работать с не-ASCII символами. Последнее - хоть и корректное, но читается сложно.

let mut chars = s.chars(); chars.next(); chars.next_back(); chars.as_str().to_owned()

Антон 🇦🇲
let mut chars = s.chars(); chars.next(); chars.nex...

Черт, даже не знал что есть метод as_str 😅

Похожие вопросы

Обсуждают сегодня

Всем привет, может уже кто-то пытался выдернуть из api информацию о дате рождения пользователя Есть ли вообще такая возможность?
Artem Stormageddon
2
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Подскажите где можно прочитать про реализацию возможности писать человеку при подписке на телеграм канал от имени бота? Было бы не плохо если для Telegraf@3.38.0
Pan Lipton
10
Мне вот что интересно, кто на рфе стартовал/играл, что вы фармили, в каком виде контента он прямо хорош? Экспедиция? Вроде прямо на замазанных мапах рф сдувается
Владислав
20
Ребята, я за проф советом😅 По микросервисам. В монолите есть общие файлы для сервисов: фетчи, конфиги, либы, утилсы.. как при распиле правильно их поддерживать? Пока вариант д...
Александр Тарасюк
1
всем привет. я правильно понимаю, что в телеграфе 4, если сессию указать у сообщения с коллбеком (кликнул на кнопку и установил сессию), то она не сохраняется?
Тимур
1
‌/r/pathofexile moderation changes top scoring links : pathofexile (RSS) Hi, everyone. On behalf of the subreddit mod team, I’m here to give you a few updates on the subreddi...
Esionru
3
У меня вопрос к знающими, стоит ли вступать в гильдии в игре или лучше полная свобода?
Енот Полоскун
17
У вас бывает ощущение, что хочется потратить весь отпуск на то, чтоб только спать?
Николай
15
Кто нибудь поясните это всё таки вброс или да? Про санктум слышал на поедб вбросили, а по дурке откуда инфа и на сколько это вообще правда? Пахнет шизофренией какой-то ✅Divi...
Dmitry Ritter
9
Карта сайта