Biorąc pod uwagę ciąg znaków, jak uzyskać ostatnie słowo w Scali, zakładając, że słowa są podzielone spacją?
Przykład:
val s = "Hello world1, world2, world"
Oczekiwany wynik: "world"
Odpowiedzi:
0 dla odpowiedzi № 1Poszedłbym przez string.split(" ").lastOption
. Należy jednak pamiętać, że zamiast spacji można użyć innych pustych znaków
1 dla odpowiedzi nr 2
def lastW(s: String) = {
@tailrec
def lw(s: Array[Char], i: Int = s.length-1, w: String=""): String = s(i) match {
case(" ") => w
case c if i == 0 => c+w
case c => lw(s, i-1, c+w)
}
lw(s.toCharArray)
}
Nie, tylko żartuję. Po prostu zrób to:
string.split("").reverse.takeWhile(_ != " ").reverse.mkString("")
Albo to:
string.replaceAll("^.* ", "")
Albo to:
"\S+$".r.findFirstIn(string).get
Albo może:
string.split(" ").last
Lub
string.split(" ").reverse.head
Itp.