文字列中の最後の文字を削除しようとしています。私はそのindex
を取得することができます:Scala:最後に出現した文字を削除する
str.lastIndexOf(',')
私はすでに文字列にsplit
とreplace
機能を使用しようとしました。
文字列中の最後の文字を削除しようとしています。私はそのindex
を取得することができます:Scala:最後に出現した文字を削除する
str.lastIndexOf(',')
私はすでに文字列にsplit
とreplace
機能を使用しようとしました。
あなたはpatch
を使用することができます。
scala> val s = "s;dfkj;w;erw"
s: String = s;dfkj;w;erw
scala> s.patch(s.lastIndexOf(';'), "", 1)
res6: String = s;dfkj;werw
'indexOf' - >' lastIndexOf' –
それは機能します!ありがとう! – CMPE
次の操作を試みることができる:
val input = "The quick brown fox jumps over the lazy dog"
val lastIndexOfU = input.lastIndexOf("u")
val splits = input.splitAt(lastIndexOfU)
val inputWithoutLastU = splits._1 + splits._2.drop(1) // "The quick brown fox jmps over the lazy dog"
警告 - 'List#tail'は部分的な関数です - ' List()。tail java.lang.UnsupportedOperationException:空リストの末尾 ' –
ありがとうございました。 –
scala> def removeLast(x: Char, xs: String): String = {
|
| val accumulator: (Option[Char], String) = (None, "")
|
| val (_, applied) = xs.foldRight(accumulator){(e: Char, acc: (Option[Char], String)) =>
| val (alreadyReplaced, runningAcc) = acc
| alreadyReplaced match {
| case some @ Some(_) => (some, e + runningAcc)
| case None => if (e == x) (Some(e), runningAcc) else (None, e + runningAcc)
| }
| }
|
| applied
| }
removeLast: (x: Char, xs: String)String
scala> removeLast('f', "foobarf")
res7: String = foobar
scala> removeLast('f', "foobarfff")
res8: String = foobarff
downvoterに:なぜですか?投稿されたソリューションの批判を受けてうれしいです。 –
あなたはそれを試すことができます: 's.substring(0、s.length -1)'( 'S'が文字列であると仮定)。 – alifirat
最後の索引にはありません。それはテキストの真ん中です – CMPE
文字列の大きさはどれくらいですか?それがいかに効率的か気にしていますか? – nattyddubbs