1

我正在使用^char 拆分字符串。我正在阅读的字符串来自一些外部来源。该字符串包含一些\n字符。

该字符串可能如下所示:

Hi hello^There\nhow are\nyou doing^9987678867abc^popup

当我像下面这样拆分时,为什么数组长度会出现2而不是4

String[] st = msg[0].split("^");
st.length //giving "2" instead of "4"

看起来, split 忽略了 after \n

如何在不替换\n为其他角色的情况下修复它。

4

4 回答 4

1

split 的字符串参数被解释为正则表达式。所以你必须逃避 char 并使用:

st.split("\\^")

有关更多详细信息,请参阅此答案

于 2013-08-26T08:51:33.050 回答
0

“^”被JDK称为正则表达式。
为了避免这种混淆,您需要修改代码如下
old code = msg[0].split("^")
new code = msg[0].split("\\^")

于 2013-08-26T08:57:27.577 回答
0

如果你只想分割^,那么

String[] st = msg[0].split("\\^");

如果我正确地阅读了你的问题,你想用^\n字符分割,所以这就足够了。

String[] st = msg[0].split("[\\^\\\\n]");

这认为\n字面上存在一个字符串中的 2 个字符。

于 2013-08-26T08:51:02.230 回答
0

逃离^角色。改为使用msg[0].split("\\^")

String.split将其参数视为正则表达式。由于^正则表达式具有特殊含义,因此您需要对其进行转义以使用其文字表示。

于 2013-08-26T08:51:45.350 回答