Видаліть символи з кінця рядкової шкали


82

Який найпростіший спосіб видалити останній символ із кінця рядка в Scala?

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

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

Будь ласка, хтось скаже мені, що існує такий приємний простий метод, як рубати щось подібне.

Відповіді:


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

Дякую Вальтеру, саме такий метод, на мій погляд, я мав би мати Скала. Знову ж усі ці приємні методи - лише 2.8, тому я приходжу тут :)
BefittingTheorem

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

+1, дякую @Daniel Spiewak; привів мене до "str drop (str.length -4)", отримує останні 4 кредитні картки, саме те, що мені потрібно ;-)
virtualeyes

5

Якщо ви хочете отримати найбільш ефективне рішення, ніж просто використовувати:

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

4
string.reverse.substring(1).reverse

Це в основному рубати, правда? Якщо ви прагнете методу відбивного, чому б не написати власну StringUtilsбібліотеку та не включити її у свої проекти, поки не знайдете підходящу, більш загальну заміну?

Гей, дивись, це в загальному.

Apache CommonsStringUtils .


3
Це точно Стефан. Я сподівався на метод, який, дивлячись на код, ви розумієте, що відбувається :) Те, що я кажу: Для чогось такого простого, як "видалити останній символ із рядка" reverse.substring (1) .reverse це вводить в оману. Дякую за відповідь
BefittingTheorem

Крім того, вам потрібно буде обернути рядок у StringBuilder, щоб отримати зворотний метод.
Фабіан Стіг,

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

Шкода, що неявний для StringUtils буде великою роботою. Просто показує невідповідність між тим, як користувачі Scala та користувачі Java думають про методи розширення.
Ken Bloom

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