无法分割字符串

问题描述:

我有一个字符串无法分割字符串

先生praneel PIDIKITI

当我使用这个正则表达式

String[] nameParts = name.split("\\s+"); 

而不是让三个部分,我只获得两个,MrPraneel PIDIKITI

我无法拆分第二个字符串。有谁知道可能是什么问题?

我甚至使用split(" ");

问题是我用replaceAll("\\<.*?>", " ").trim();将html转换成这个字符串,然后我用name.split("\\s+");来获得名称值。

我认为它必须是空间以外的东西(一些特殊字符)。

+2

我无法证实这一点。两种方法都适用于我。请提供一个完整的例子。 – musiKk 2011-03-21 11:20:30

+2

这看起来似乎有点牵强,但可能Praneel&PIDIKITI之间的空间实际上不是空格字符0x20? – Maverik 2011-03-21 11:33:41

+1

@Maverik:一点都不牵强 - 几乎就是这样。 @Praneel:遍历字符串,将每个字符打印为一个int,一个真实的空间将是32,其他任何东西都是你的箴言。 – 2011-03-21 11:36:22

你的代码应该可以工作。我怀疑你的意见。 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]",""); 
+0

当我在屏幕上打印它看起来像这样Mr#Praneel#PIDIKITI – 2011-03-21 12:03:31

+0

@Praneel:删除所有不可打印的垃圾字符,像这样'name.replaceAll(“[^ \\ p {Print}]”,“”)'' 。 – 2011-03-21 12:13:05

+0

@Praneel:Praneel和PIDIKITI之间没有空间,但只有一个垃圾。 – 2011-03-21 12:15:49

如果你解析HTML,我可能会建议JSoup?它是一个很好的HTML解析器,用于java