在Scala中为字符串添加双引号

时间:2018-05-18 17:58:17

标签: regex scala

我很抱歉是一个正则表达式的新手,但我有一个类似Json的字符串:

{
foo:foostring,
bar:barstring
} 

我需要在每个字符串中添加双引号,使其看起来像真正的Json

{
"foo":"foostring",
"bar":"barstring"
}

我已经这样做了:

val jsonString = oldString.replaceAll("(\\w+)", "\"$1\"")

它有效!问题是,这些“foostring”和“barstrings”是自动生成的,有时它们包含“ - ”。当发生这种情况时,我的正则表达式失败并且它会像这样逃脱连字符:

{
"foo":"foo"-"string",
"bar":"bar"-"string"
}

我不知道如何使doble引号包含“ - ”符号。

这里有任何帮助吗?

1 个答案:

答案 0 :(得分:3)

只需与[...]\w的合并课程-匹配,但请确保连字符不会出现在对正则表达式具有特殊含义的位置(例如范围{ {1}})。

例如:

A-Z

打印出来:

val oldString = """{
foo:foostring,
bar:barstring,
baz:baz-string
}"""

val jsonString = oldString.replaceAll("([\\w-]+)", "\"$1\"")

println(jsonString)