StringScalaの末尾から文字を削除する


82

Scalaで文字列の最後から最後の文字を削除する最も簡単な方法は何ですか?

RubysStringクラスにはchopのような非常に便利なメソッドがいくつかあることがわかりました。Scalaで "oddoneoutz" .headOptionを使用したはずですが、減価償却されています。私は過度に複雑になりたくありません:

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

誰かが私にこの一般的な何かのためにチョップのような素敵な簡単な方法があると教えてください。

回答:


153

2.8で動作するdropRightを使用するのはどうですか:-

"abc!".dropRight(1)

これは「abc」を生成します


1
私が2.7で思いつくことができる最も簡潔なものは、 "abc!"。split( "。$)(0)
Don Mackenzie

3
おっと、私は「abc!」を意味します。split( "。$")(0)
ドンマッケンジー

ドン、ありがとう
。2.8

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

Walterに感謝します、それはまさに私がScalaが持っていると思った方法です。繰り返しますが、これらの優れたメソッドはすべて2.8のみなので、ここでアップグレードしてください:)
BefittingTheorem 2009

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

+ 1、@ DanielSpiewakに感謝します。私を「strdrop(str.length -4)」に導き、クレジットカードの最後の4つを取得しました。必要なものだけです;-)
virtualeyes 2012年

5

単に使用するよりも最も効率的なソリューションが必要な場合:

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

4
string.reverse.substring(1).reverse

それは基本的にチョップですよね?チョップメソッドが必要な場合は、独自のStringUtilsライブラリを作成して、適切でより一般的な代替品が見つかるまでプロジェクトに含めてみませんか?

ねえ、見て、それは庶民院です。

ApacheCommonsStringUtils


3
確かにステファンです。コードを見ると、何が起こっているのかを理解できるメソッドを望んでいました:)私が言っているのは:「文字列から最後の文字を削除する」のような単純なものの場合reverse.substring(1).reverse is誤解を招く。返信ありがとうございます
BefittingTheorem 2009年

さらに、逆メソッドを取得するには、文字列をStringBuilderにラップする必要があります。
Fabian Steeg

2
最初の部分は主に冗談でした:P。Scalaを見ているJavaプログラマーは、StringUtilsに精通しているか、少なくともApache Commonsライブラリーを知っている必要があります。これにより、インポートを確認し、気分を害することはありません。コモンズは便利であり、可能な場合は使用する必要があります。ほとんどのプロジェクトにはある時点でコモンズが含まれていることがわかったので、通常、ライブラリを使用する費用はかかりません。StringUtilsをscalaプログラムでsuとしてエイリアスし、su.chop(str)と呼ぶこともできます。これは非常に簡潔で、部分文字列を使用するほど面倒ではありません。
Stefan Kendall

StringUtilsの暗黙的なものが悪すぎると、多くの作業が必要になります。ScalaユーザーとJavaユーザーが拡張メソッドについて考える方法の不一致を示しているだけです。
ケンブルーム

importorg.apache.commons.blah。{StringUtils => su}は大変な作業ですか?理想的には、私が言ったように、これらのライブラリがすでに確立されている環境にデプロイすることになるでしょう。
Stefan Kendall
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.