StringTokenizer拆分为"<br/>"

AnA*_*ser 4 java

也许我是傻瓜,但我不明白为什么StringTokenizer的行为在这里:

import static org.apache.commons.lang.StringEscapeUtils.escapeHtml;

String object = (String) value;
String escaped = escapeHtml(object);
StringTokenizer tokenizer = new StringTokenizer(escaped, escapeHtml("<br/>"));
Run Code Online (Sandbox Code Playgroud)

如果是fx.价值是

Hej<br/>$user.get(0).name Har vundet<br/><table border='1'><tr><th>Name</th><th>Played</th><th>Brewed</th></tr>#foreach( $u in $user )<tr><td>$u.name</td> <td>$u.played</td> <td>$u.brewed</td></tr>#end</table><br/>
Run Code Online (Sandbox Code Playgroud)

然后结果是

Hej
$use
.
e
(0).name Ha
 vunde
a
e 
o
de
='1'
h
Name
h
h
P
ayed
h
h
B
ewed
h
#fo
each( $u in $use
 )
d
$u.name
d

d
$u.p
ayed
d

d
$u.
ewed
d
#end
a
e
Run Code Online (Sandbox Code Playgroud)

对我来说完全是无稽之谈.

我怎样才能让它像我期望的那样表现出来.

Dav*_*vis 8

文档:

delim参数中的字符是用于分隔标记的分隔符.分隔符字符本身不会被视为令牌.

换句话说,告诉StringTokenizer何时分离字符串的字符是:

  • <
  • b
  • [R
  • /
  • >

当它匹配字符串中的任何字符(escaped代码中的变量)时,StringTokenizer实例将拆分结果并删除令牌.您可以通过注意r输出中没有出现该字母来确认这一点.

String.split相反,请使用其他人的建议.