Шаблоны Scala: сопоставление строки с шаблоном - PullRequest
0 голосов
/ 25 января 2019

Я использую Scalate для шаблонов.Обычно это происходит следующим образом:

  • Шаблон:

    Hello {{name}}

  • Параметры:

    `Карта («имя» -> «Петр»)

  • Результат:

    Hello Peter

Есть ли способчтобы получить карту параметров в результате ?

  • Шаблон:

    Hello {{name}}

  • Запрос:

    Hello Peter

  • Результат:

    Map("name" -> "Peter")

1 Ответ

0 голосов
/ 26 января 2019

Может быть, вы ищете регулярное выражение с именованными группами?

//Regex with named groups
val pattern = """^Hello (?<firstname>\w+) (?<lastname>\w+)$""".r

val groups = List(
    "firstname",
    "lastname"
)

def matchAll(str: String): Option[Map[String, String]] = pattern
    .findFirstMatchIn(str)
    .map { matched =>
      groups.map(name => name -> matched.group(name)).toMap
    }

matchAll("Hello Joe Doe") //Some(Map(firstname -> Joe, lastname -> Doe))
...