【发布时间】:2019-07-17 18:34:26
【问题描述】:
我将 JSON 消息的正文与正则表达式“:|\n”分开并将值存储到一个数组中。一旦发现“消息:”,我想获得帮助,阻止我的正则表达式拆分消息。
在 JSON 正文中,每个部分由一个新行分隔,因此正文看起来类似于:
{"body": "姓名:Alfred Alonso\n公司:null\n电子邮件:123@abc.com\n电话号码:123-456-9999\n项目类型:现有\n联系方式:电子邮件\n时间范围:1 以内月\n留言:您好,\n这是我的留言。\n谢谢您,\nJohn Doe"}
当用户没有在消息中创建新行时,下面的代码可以完美运行,因此整个消息将存储为一个数组值。
感谢任何可以帮助我解决此问题的人!
String[] messArr = body.split(":|\n");
for (int i = 0; i < messArr.length; i++)
messArr[i] = messArr[i].trim();
if ("xxx".equals(eventSourceARN)) {
name = messArr[1];
String[] temp;
String delimiter = " ";
temp = name.split(delimiter);
name = temp[0];
String lastName = temp[1];
company = messArr[3];
email = messArr[5];
phoneNumber = messArr[7];
projectType = messArr[9];
contactBy = messArr[11];
timeFrame = messArr[13];
message = messArr[15];
我愿意
messArr[14] = "Message"
messArr[15] = "Hello, This is my message. Thank you, John Doe"
这就是我得到的 [...,留言,你好,这是我的留言。谢谢你,John Doe]。
messArr[14] = "Message"
messArr[15] = "Hello,"
messArr[16] = "This is my message."
messArr[17] = "Thank You,"
messArr[18] = "John Doe"
【问题讨论】:
-
如果你要解析 JSON,我建议使用合适的 JSON 解析器。
-
使用json解析器更好
-
@mrzasa 我正在使用 Jackson 的 ObjectMapper。
-
或者你可以先用文本“消息”分割,然后处理剩下的文本
-
你可以技术上做类似
body.substring(body.indexOf("Message:") + "Message:".length() + 1, body.length() - 2)的事情。 ...但不要这样做。真的应该使用 JSON 解析器。