在scala中删除前缀和后缀我们有stripPrefix和stripSuffix。我想知道我们是否有一个直接的方法来只用一个方法调用来替换这个前缀和后缀?例如,我需要解析这种格式的JSON:
[{
policy: "ha-all",
exclusive_consumer_tag: "",
messages_ready: 0,
messages_unacknowledged: 0,
messages: 0,
consumers: 0,
active_consumers: 0,
memory: 16011528,
slave_nodes: [
"rabbit@xxxx"
]
name: "W3_COMM_V2_BULK_EMAIL_H",
vhost: "/",
},
{
policy: "ha-all",
exclusive_consumer_tag: "",
messages_ready: 0,
messages_unacknowledged: 0,
messages: 0,
consumers: 0,
active_consumers: 0,
memory: 16011528,
slave_nodes: [
"rabbit@xxxx"
]
name: "W3_COMM_V2_BULK_EMAIL_ABC",
vhost: "/",
}]
对于JSON解析,我需要删除封闭的[
和]
,我可以使用条带前缀和后缀轻松实现,但我还需要将其替换为{
和{{1是的,我知道有几种方法可以做到这一点,但我想知道最直接和最快的方法。或者我是否必须回到常规}
?
答案 0 :(得分:1)
尝试这样的正则表达式,
val re = """(?s)\[(.*)\]""".r
其中(?s)
表示多行匹配。因此
val a = """[{ ... }]"""
例如用
提取感兴趣的内容val re(x) = a
x = {...}
关于与字符串剥离方法相比的效率,可能后者是更好的选择,但是一旦定义了正则表达式,一次调用就可以实现。
为了替换外部方括号,字符串插值可能很简单,例如
val out = s"{$x}"
答案 1 :(得分:1)
正则表达式在处理字符串时提供了极大的灵活性,但是如果您知道它的格式并且只想删除[{
}]
个字符,那么您可以subString()
:
String s = fullJson.subString(2, fullJson.length() - 2);