我有一个字符串
praneel PIDIKITI先生
当我使用这个正则表达式时
String[] nameParts = name.split("\\s+");
而不是获得三个部分我只得到两个,Mr
和Praneel PIDIKITI
。
我无法拆分第二个字符串。有谁知道可能是什么问题?
我甚至使用过split(" ");
。
问题是我使用replaceAll("\\<.*?>", " ").trim();
将html转换为此字符串,然后我使用name.split("\\s+");
获取名称值。
我认为它必须是空间以外的东西(某些特殊字符)。
答案 0 :(得分:3)
您的代码应该有效。我怀疑你的意见。 Praneel和PIDIKITI之间可能存在不可打印的垃圾字符。例如,
String name = "Mr praneel" + (char)1 +"PIDIKITI";
String[] nameParts = name.split("\\s+");
for(String s : nameParts)
System.out.println(s);
你确定Praneel和PIDIKITI之间没有垃圾角色吗?
删除不可打印的字符,如下所示:
// remove non printable characters excluding white space characters
name = name.replaceAll("[^\\p{Print}\\s]","");
答案 1 :(得分:0)
如果您要解析HTML,我可以推荐JSoup吗?它是一个很好的java
HTML解析器