Scala模板:将字符串映射到模板

Scala模板:将字符串映射到模板,scala,scalate,scala-template,Scala,Scalate,Scala Template,我使用Scalate作为模板。通常是这样的: 模板: Hello{{name} 参数: `地图(“名称”->“彼得”) 结果: 你好,彼得 是否有办法获得参数映射作为结果 模板: Hello{{name} 请求: 你好,彼得 结果: Map(“name”->“Peter”) 也许您正在寻找带有命名组的正则表达式 //Regex with named groups val pattern = """^Hello (?<firstname>\w+) (?<last

我使用Scalate作为模板。通常是这样的:

  • 模板:

    Hello{{name}

  • 参数:

    `地图(“名称”->“彼得”)

  • 结果:

    你好,彼得

是否有办法获得参数映射作为结果

  • 模板:

    Hello{{name}

  • 请求:

    你好,彼得

  • 结果:

    Map(“name”->“Peter”)


也许您正在寻找带有命名组的正则表达式

//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))
//带有命名组的正则表达式
val pattern=“”^Hello(?\w+)(\w+)$”。r
val组=列表(
“名字”,
“姓氏”
)
def matchAll(str:String):选项[Map[String,String]]=pattern
.findFirstMatchIn(str)
.map{matched=>
groups.map(name=>name->matched.group(name)).toMap
}
matchAll(“你好,乔·多伊”)//一些(地图(firstname->Joe,lastname->Doe))

我不这么认为。我也不认为你的问题有唯一的解决办法。假设模板是
Hello{{{name}}{{lasname}}
,您得到了
Hello Abc Def Xyz
。你怎么知道
姓名
的结尾和
姓氏
的开头?我需要它作为URL。因此,我认为如果您仅将参数限制为一个path元素,这是可能的-但是如果您不定义一些不允许作为参数的字符,这是不可能的。谢谢,这看起来可能是一个好的开始。然而,当我尝试运行它时,它失败了:-我错过了什么好消息吗