10

右から区切り文字で文字列を分割する方法は?

例えば

scala> "hello there how are you?".rightSplit(" ", 1)
res0: Array[java.lang.String] = Array(hello there how are, you?)

Python には、.rsplit()私が Scala で求めているメソッドがあります。

In [1]: "hello there how are you?".rsplit(" ", 1)
Out[1]: ['hello there how are', 'you?']
4

3 に答える 3

5

普通の古い正規表現を使用できます。

scala> val LastSpace = " (?=[^ ]+$)"
LastSpace: String = " (?=[^ ]+$)"

scala> "hello there how are you?".split(LastSpace)
res0: Array[String] = Array(hello there how are, you?)

(?=[^ ]+$)は、少なくとも 1 文字の長さ?=の非スペース ( ) 文字のグループを先読み ( ) することを示しています。[^ ]最後に、このスペースとそれに続くそのようなシーケンスは、文字列の最後にある必要があります: $.

トークンが 1 つしかない場合、このソリューションは壊れません。

scala> "hello".split(LastSpace)
res1: Array[String] = Array(hello)
于 2013-04-02T08:42:42.373 に答える