Удаление символов из конца String Scala


82

Каков самый простой способ удалить последний символ из конца строки в Scala?

Я считаю, что класс Rubys String имеет несколько очень полезных методов, например chop . Я бы использовал "oddoneoutz" .headOption в Scala, но он устарел. Я не хочу вдаваться в чрезмерную сложность:

string.slice(0, string.length - 1)

Кто-нибудь, пожалуйста, скажите мне, что есть хороший простой метод, например, chop для чего-то столь распространенного.

Ответы:


156

Как насчет использования dropRight, который работает в 2.8: -

"abc!".dropRight(1)

Что дает "abc"


1
Самым кратким, что я могу придумать для 2.7, является «abc!». Split («. $) (0)
Дон Маккензи

3
Упс, я имею в виду «abc!». Split («. $») (0)
Дон Маккензи

Отлично, спасибо, Дон, мне придется обновиться до 2.8 :)
BefittingTheorem

13
string.init // padding for the minimum 15 characters

Спасибо, Уолтер, я думал, что у Scala есть именно такой метод. Опять же, все эти хорошие методы предназначены только для 2.8, так что обновляйтесь :)
BefittingTheorem

7
val str = "Hello world!"
str take (str.length - 1) mkString

+1, спасибо @Daniel Spiewak; привел меня к "str drop (str.length -4)", получил последние 4 кредитной карты, как раз то, что мне было нужно ;-)
virtualeyes


4
string.reverse.substring(1).reverse

Это в основном отбивная, правда? Если вам нужен метод измельчения, почему бы не написать свою собственную StringUtilsбиблиотеку и не включить ее в свои проекты, пока вы не найдете подходящую, более универсальную замену?

Эй, посмотри, это в свободном доступе.

Apache CommonsStringUtils .


3
Конечно, это Стефан. Я надеялся на метод, который, когда вы посмотрите на код, вы поймете, что происходит :) Я говорю следующее: для чего-то столь же простого, как «удалить последний символ из строки» reverse.substring (1) .reverse - это вводящие в заблуждение. Спасибо за ответ
BefittingTheorem

Кроме того, вам нужно будет обернуть строку в StringBuilder, чтобы получить обратный метод.
Fabian Steeg

2
Первая часть была в основном шуткой: P. Любой Java-программист, смотрящий на ваш Scala, должен быть знаком со StringUtils или, по крайней мере, знать библиотеку Apache Commons, чтобы увидеть импорт и не обидеться. Commons полезен, и его следует использовать там, где это возможно. Я обнаружил, что большинство проектов в какой-то момент включают общие ресурсы, поэтому использование библиотеки обычно не требует затрат. Вы даже можете использовать псевдоним StringUtils как su в своих программах scala и называть его su.chop (str), что довольно лаконично и не так отстойно, как использование substring.
Стефан Кендалл

Жаль, что неявный StringUtils потребует много работы. Просто показывает несоответствие между тем, как пользователи Scala и пользователи Java думают о методах расширения.
Кен Блум,

import org.apache.commons.blah. {StringUtils => su} - это много работы? В идеале, как я уже сказал, вы должны выполнять развертывание в среде с уже установленными библиотеками.
Стефан Кендалл
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.