С учетом строки, как получить последнее слово в Scala, считая слова, разделенные пробелом?Scala. Как получить последнее слово в String
Пример:
val s = "Hello world1, world2, world"
Ожидаемые результаты: "world"
С учетом строки, как получить последнее слово в Scala, считая слова, разделенные пробелом?Scala. Как получить последнее слово в String
Пример:
val s = "Hello world1, world2, world"
Ожидаемые результаты: "world"
Я бы на string.split(" ").lastOption
. Но имейте в виду, что вместо пробелов могут использоваться другие пустые символы
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)
}
Нах, просто шучу. Просто сделайте это:
string.split("").reverse.takeWhile(_ != " ").reverse.mkString("")
Или это:
string.replaceAll("^.* ", "")
Или это:
"\\S+$".r.findFirstIn(string).get
Или, может быть:
string.split(" ").last
Или
string.split(" ").reverse.head
Etc.
Обратите внимание, что последние 3 варианта используют частичные функции: 'get',' last' и 'head'. –
Они не являются частичными функциями. – Dima
'head - это то, что известно как частичная функция: есть определенные входы, для которых сбой головки. Функции, которые имеют определенные входы, которые заставят их бесконечно возвращаться, также называются частичными. Функции, которые четко определены на всех возможных входах, известны как общие функции. '- [Проф. Brent Yorgey] (http://www.cis.upenn.edu/~cis194/spring13/lectures/03-rec-poly.html) –
Существует много способов ... 's.substring (s.lastIndexOf (" ") + 1);'? – Maroun
s.split ("\\ s +"). ToList.filter (_. Length> 0) .last – eliasah
@litehause Вероятно, вас отклоняют, потому что ваш вопрос не показывает вашу попытку и просто требует ответа. Можете ли вы показать нам некоторые из ваших попыток, и мы сможем дать вам подсказки, почему они потерпели неудачу, а также ответ. – wheaties