我正在尝试写一些返回一些 search suggestion 的东西结果。
假设我有一个像这样的字符串:
"[Harry,[harry potter,harry and david]]"
格式类似于 [A_STRING,A_STRING_ARRAY_HERE]。
但我希望输出格式是这样的
[ "Harry",["harry potter","harry and david"]]
这样我就可以将它放入 HTTP 响应正文中。
有没有一种简单的方法可以做到这一点,我不想从头开始为单个字符串添加“”。
最佳答案
演示
String text = "[Harry,[harry potter,harry and david]]";
text = text.replaceAll("[^\\[\\],]+", "\"$0\"");
System.out.println(text);
输出:["哈利",["哈利波特","哈利和大卫"]]
说明:
如果我理解正确,您希望用双引号将所有非 [
-and-]
-and-,
字符系列括起来。在这种情况下,您只需将 replaceAll
方法与正则表达式 ([^\\[\\],]+)
结合使用,其中
[^\\[\\],]
- 表示不是[
或]
或的一个非字符,
(逗号)[^\\[\\],]+
-+
表示其前面的元素可以出现一次或多次,在这种情况下,它代表一个或多个不是[
或]
或,
(逗号) 的字符
现在在替换中我们可以围绕 group 的匹配0(整个匹配)由带有双括号 "$0"
的 $0
表示。顺便说一句,因为 "
是字符串中的元字符(它用于开始和结束字符串),如果我们想创建它的文字,我们需要对其进行转义。为此,我们需要放置 \
之前,因此最后代表 "$0"
的字符串需要写为 "\"$0\""
。
有关 $0
使用的组 0 的更多说明(引自 https://docs.oracle.com/javase/tutorial/essential/regex/groups.html ):
There is also a special group, group 0, which always represents the entire expression.
关于java - 在 JSON 字符串中添加双引号的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26936156/