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


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.