在apache处理器方法中,我试图拆分一个字符串,该字符串是从Apache消息代理作为JSON发送的。拆分例程如下所示:
String[] messageLines = new String[0];
if (messageBody.contains("\\n")) {
messageLines = messageBody.split("\\n");
} else {
messageLines = messageBody.split("\n");
}
在调试器中,"messageBody“字符串如下所示:
"deviceName (string:1) -> TEST\nintValue (int:1) -> 123\ndoubleValue (double:1) -> 12.345\nacquisitionStamp (long:1) -> 1592468678231250944\nintArrayValue (int[]:10) -> [1,2,3,4,5,6,7,8,9,10]"
代码运行在if (messageBody.contains("\\n")) {...
部件中,但是.split("\\n")
只返回一个只有一个条目(完整的messageBody字符串)的数组。同样的情况是,我使用.split("\n")
。这里怎么了?
发布于 2020-06-18 00:45:24
String.split()
接受正则表达式作为参数。为了匹配字符串中的文本反斜杠(\
),在正则表达式中需要4个反斜杠(\\\\
)。
对于regex,反斜杠需要转义一次,然后再转义两个反斜杠,以便在字符串中使用。
就你的例子而言,它将是:
messageLines = messageBody.split("\\\\n");
发布于 2020-06-18 00:45:51
请使用StringTokenizer类拆分(Tokenise)字符串,而不是使用String.split()。StringTokenizer st =新的StringTokenizer(str,"\n")来打断新行中的字符串。
或StringTokenizer st =新StringTokenizer(str,"\n")在存在'\n‘时将其断开。
https://stackoverflow.com/questions/62445817
复制相似问题