Java检测并用替换换行符\n
我从数据库中获取以下字符串:Java检测并用替换换行符\n,java,json,encode,Java,Json,Encode,我从数据库中获取以下字符串: Test Action Item ZusammenführenTest Action Item ZusammenführenTest Action Item ZusammenführenTest Action Item ZusammenführenTest Action Item ZusammenführenTest Action Item Zusammenführen fsd fsa df asdf as dfs fd sad f sadf sad 现在我需要将
Test Action Item ZusammenführenTest Action Item ZusammenführenTest Action Item ZusammenführenTest Action Item ZusammenführenTest Action Item ZusammenführenTest Action Item Zusammenführen
fsd
fsa
df
asdf
as
dfs
fd
sad
f
sadf
sad
现在我需要将所有换行符编码为\n,这样我就可以从字符串中生成正确的JSON对象,因为JSON不支持换行符。如何检测现有字符串中的所有换行符并将其替换为\n
我已经试过了。replace()和replaceAll()。但是我需要一种方法首先检测换行符,这样我才能替换它们
其他一些信息:
在尝试了这里提到的几个替换函数之后,JSON仍然是这样的:
{ "id": 182,
"status": "eing",
"text": "KORE_AI_6",
"beschreibung": "Eins
Zwei
Drei",
"tags": "KORE"
},
escapeUtils.escapeJson(map.get("BESCHREIBUNG").toString())
看起来应该是这样的
{ "id": 182,
"status": "eing",
"text": "KORE_AI_6",
"beschreibung": "Eins\nZwei\nDrei",
"tags": "KORE"
},
如果从数据库中获取的
字符串被称为jsonString
,则可以使用以下正则表达式:
String result = jsonString.replaceAll("[\r\n]+", "\n");
这将匹配最常见的换行符\r\n
\n
\r
。请注意,这也会将多个空行替换为一个空行。我为自己解决了这个问题。不幸的是,.replace()
像上面在其他注释和答案中所述的那样完成了这项工作,但是map.put()
操作在恢复更改后再次执行
为了解决这个问题,我使用了org.apache.commons.lang3.StringEscapeUtils
中的StringEscapeUtils
,并使用了escapeJson()
方法,如下所示:
{ "id": 182,
"status": "eing",
"text": "KORE_AI_6",
"beschreibung": "Eins
Zwei
Drei",
"tags": "KORE"
},
escapeUtils.escapeJson(map.get("BESCHREIBUNG").toString())
如果您使用的换行符不是\n
,它们是什么?很遗憾,搜索\n失败不会得到任何结果。我不知道,这就是我问的原因。你也可以发布搜索\n
的代码吗?您问题中的字符串是从数据库中获得的实际字符串还是您在查看器中看到的字符串?如果这些行不是由\n
分隔的,则可能是由Unicode行分隔符或段落分隔符分隔的。请尝试s.replaceAll(“[\\p{Zl}\\p{Zp}]\\r?\\n”,“\n”)
。我知道我尝试过您的解决方案VGR,但遗憾的是JSON对象仍然有换行符,而不是/n。我尝试过您的解决方案,但JSON字符串仍然有换行符,这会导致客户端JSON解析器出错。