我从HTTP请求中得到一个乱码的JSON字符串,所以我正在寻找一个临时解决方案来仅选择JSON字符串.
request.params()返回:
[{"insured_initials":"Tt","insured_surname":"Test"}=, _=1329793147757,
callback=jQuery1707229194729661704_1329793018352
Run Code Online (Sandbox Code Playgroud)
我希望从"{"开始到"}"结束的所有内容.
我发现了很多与其他语言做类似事情的例子,但这样做的目的不仅是解决问题,还要学习Scala.有人请告诉我如何选择{....}部分吗?
Regexps应该做的伎俩:
"\\{.*\\}".r.findFirstIn("your json string here")
Run Code Online (Sandbox Code Playgroud)
正如 Jens 所说,正则表达式通常就足够了。但是,语法有点不同:
"""\{.*\}""".r
Run Code Online (Sandbox Code Playgroud)
创建一个scala.util.matching.Regex对象,它提供了您可能想要对正则表达式执行的典型查询方法。
在您的情况下,您只对序列中的第一次出现感兴趣,这是通过以下方式完成的findFirstIn:
scala> """\{.*\}""".r.findFirstIn("""[{"insured_initials":"Tt","insured_surname":"Test"}=, _=1329793147757,callback=jQuery1707229194729661704_1329793018352""")
res1: Option[String] = Some({"insured_initials":"Tt","insured_surname":"Test"})
Run Code Online (Sandbox Code Playgroud)
请注意,它返回Option类型,您可以在匹配中轻松使用该类型来查明是否成功找到正则表达式。
编辑:最后要注意的一点是,正则表达式通常不匹配换行符,因此,如果您的 JSON 未完全包含在第一行中,您可能需要首先考虑消除换行符。