2016-03-14 3 views
-7

С учетом строки, как получить последнее слово в Scala, считая слова, разделенные пробелом?Scala. Как получить последнее слово в String

Пример:

val s = "Hello world1, world2, world" 

Ожидаемые результаты: "world"

+1

Существует много способов ... 's.substring (s.lastIndexOf (" ") + 1);'? – Maroun

+0

s.split ("\\ s +"). ToList.filter (_. Length> 0) .last – eliasah

+4

@litehause Вероятно, вас отклоняют, потому что ваш вопрос не показывает вашу попытку и просто требует ответа. Можете ли вы показать нам некоторые из ваших попыток, и мы сможем дать вам подсказки, почему они потерпели неудачу, а также ответ. – wheaties

ответ

0

Я бы на string.split(" ").lastOption. Но имейте в виду, что вместо пробелов могут использоваться другие пустые символы

0
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.

+1

Обратите внимание, что последние 3 варианта используют частичные функции: 'get',' last' и 'head'. –

+0

Они не являются частичными функциями. – Dima

+1

'head - это то, что известно как частичная функция: есть определенные входы, для которых сбой головки. Функции, которые имеют определенные входы, которые заставят их бесконечно возвращаться, также называются частичными. Функции, которые четко определены на всех возможных входах, известны как общие функции. '- [Проф. Brent Yorgey] (http://www.cis.upenn.edu/~cis194/spring13/lectures/03-rec-poly.html) –

Смежные вопросы